The first two chunks of this r markdown file after the r setup allow for plot zooming, but it also means that the html file must be opened in a browser to view the document properly. When it knits in RStudio the preview will appear empty but the html when opened in a browser will have all the info and you can click on each plot to Zoom in on it.
A few notes about this script.
If you are running this make sure you download the whole SRFN (GitHub repository)[https://github.com/marissadyck/SRFN_ACME_Camera_Project] from my GitHub. This will ensure you have all the files, data, and proper folder structure you will need to run this code and associated analyses.
Also make sure you open RStudio through the R project (ARFN_ACME_Camera_Project.Rproj) this will automatically set your working directory to the correct place (wherever you saved the repository and it’s files) and ensure you don’t have to change the file paths for some of the data.
Lastly, if you are looking to adapt this code for a future year of data, you will want to ensure you have run all the code through 2_ACME_SRFN_landscape_covariate_exploration_script.Rmd with your data as there is much data formatting, cleaning, and restructuring that has to be done before this code will work. Helpful note: The files are numbered in the order they are used to prep for this analysis.
If you have question please email the most recent author, currently
Marissa A. Dyck
Postdoctoral research fellow
University of Victoria
School of Environmental Studies
Email: marissadyck17@gmail.com
Before starting you should ensure you have the latest version of R and RStudio downloaded. This code was generated under R version 4.2.3 and with RStudio version 2024.04.2+764.
You can download R and RStudio HERE
This script is written in R markdown and thus uses a mix of coding markup languages and R. If you are planning to run this script with new data or make any modifications you will want to be familiar with some basics of R markdown.
Below is an R markdown cheatsheet to help you get started,
R
markdown cheatsheet
If you don’t already have the following packages installed, use the code below to install them. *NOTE this will not run automatically as eval=FALSE is included in the chunk setup (i.e. I don’t want it to run every time I run this code since I have the packages installed).
install.packages('tidyverse')
install.packages('ggpubr')
install.packages('corrplot')
install.packages('Hmisc')
install.packages('glmmTMB')
install.packages('MuMIn')
install.packages('TMB', type = 'source')
install.packages('rphylopic')
install.packages('broom')
install.packages('lme4')
install.packages('car')
install.packages('ggeffects')
Then load the packages to your library so they are usable for this session.
library(tidyverse) # data tidying, visualization, and much more; this will load all tidyverse packages, can see complete list using tidyverse_packages()
library(ggpubr) # make modifications to plot for publication (arrange plots)
library(PerformanceAnalytics) # Used to generate a correlation plot
library(Hmisc) # used to generate histograms for all variables in data frame
library(glmmTMB) # Constructing GLMMs
## Warning in checkMatrixPackageVersion(): Package version inconsistency detected.
## TMB was built with Matrix version 1.4.1
## Current Matrix version is 1.5.3
## Please re-install 'TMB' from source using install.packages('TMB', type = 'source') or ask CRAN for a binary version of 'TMB' matching CRAN's 'Matrix' package
## Warning in checkDepPackageVersion(dep_pkg = "TMB"): Package version inconsistency detected.
## glmmTMB was built with TMB version 1.9.6
## Current TMB version is 1.9.1
## Please re-install glmmTMB from source or restore original 'TMB' package (see '?reinstalling' for more information)
library(MuMIn) # for model selection
library(rphylopic) # add animal silhouettes to graphs
library(broom) # extracting odds ratios in a tidy format
library(lme4) # contructing generalized linear mixed effects models
library(car) # used for calculating variance inflation factor (VIF) to assess model fit
library(ggeffects) # for extracting predicted probabilities from glms for plotting
I’ve added this short section, while not directly related to the analysis, will provide some summary statistics in one convenient location to report in results etc.
First let’s read in the cleaned raw data with all the timelapse images and drop any with no species id
timelapse <- read_csv('data/raw/srfn_timelapse_data.csv',
col_types = cols(species = col_factor())) %>%
drop_na(species)
## New names:
## • `` -> `...1`
## Warning: One or more parsing issues, call `problems()` on your data frame for details,
## e.g.:
## dat <- vroom(...)
## problems(dat)
The number of observations of this timelapse object gives us the total non-blank images from the study
levels(timelapse$species)
## [1] "White-tailed deer" "Other" "Moose"
## [4] "Black bear" "Unknown bear" "Unknown"
## [7] "Unknown ungulate" "Human" "Mule deer"
## [10] "Elk" "Owl" "Coyote"
## [13] "Red fox" "Grey wolf" "Lynx"
## [16] "ATVer" "Unknown deer" "Grizzly bear"
## [19] "Snowshoe hare" "Fisher" "Ruffed grouse"
## [22] "Red squirrel" "Raven" "Cougar"
## [25] "Spruce grouse" "Marten" "Domestic dog"
## [28] "Staff"
Then we can filter to how many of those were identified to species as mammals
mammals <- c('White-tailed deer',
'Moose',
'Black bear',
'Mule deer',
'Elk',
'Snowshoe hare',
'Grizzly bear',
'Caribou',
'Coyote',
'Fisher',
'Grey wolf',
'Lynx',
'Red fox',
'White-tailed deer',
'Red squirrel',
'Cougar')
timelapse_mammals <- timelapse %>%
filter(species %in% mammals) %>%
droplevels()
# check the levels
levels(timelapse_mammals$species)
## [1] "White-tailed deer" "Moose" "Black bear"
## [4] "Mule deer" "Elk" "Coyote"
## [7] "Red fox" "Grey wolf" "Lynx"
## [10] "Grizzly bear" "Snowshoe hare" "Fisher"
## [13] "Red squirrel" "Cougar"
# Now get summaries of each mammal
timelapse_mammals %>%
group_by(species) %>%
summarise(count = n()) %>%
arrange(desc(count))
## # A tibble: 14 × 2
## species count
## <fct> <int>
## 1 White-tailed deer 31478
## 2 Moose 6842
## 3 Elk 1875
## 4 Black bear 885
## 5 Coyote 709
## 6 Mule deer 666
## 7 Snowshoe hare 268
## 8 Grey wolf 114
## 9 Grizzly bear 102
## 10 Lynx 63
## 11 Red fox 60
## 12 Red squirrel 27
## 13 Cougar 24
## 14 Fisher 16
Now we can start the analysis prep.
First we need to read in the proportional detection (response metrics) and covariate (explanatory metrics) data files for all 6 LUs (fiscal years 2021-2022 and 2022-2023)
We have multiple response metric files that were generated in script #1, since there were a few very rare species we want to look at, let’s load in both files for now and make sure they are formatted properly for the analysis
I’m going to load them all at once using purrr and we can separate them later depending on what we want to use them for
response_metrics <- file.path('data/processed',
# provide file names
c('srfn_proportional_detections.csv',
'srfn_total_detections.csv',
'srfn_presence_absence.csv')) %>%
# use purrr map to read in all files
map(~.x %>%
# use tidyverse read_csv
read_csv(.,
# specify how some columns are read in
col_types = cols(site = col_factor())) %>%
# set column names to lowercase for coding ease
set_names(
names(.) %>%
tolower())) %>%
# set names for list items
purrr::set_names('prop_detections',
'total_detections',
'presence_absence')
str(response_metrics)
## List of 3
## $ prop_detections : spc_tbl_ [63 × 29] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## ..$ site : Factor w/ 63 levels "LUAG_119","LUAG_124",..: 1 2 3 4 5 6 7 8 9 10 ...
## ..$ black_bear : num [1:63] 4 1 3 1 0 0 6 3 0 4 ...
## ..$ coyote : num [1:63] 8 2 6 2 0 1 11 7 1 8 ...
## ..$ red_fox : num [1:63] 1 1 1 1 0 0 1 2 0 0 ...
## ..$ white-tailed_deer : num [1:63] 13 12 9 16 11 7 14 8 5 11 ...
## ..$ fisher : num [1:63] 0 1 0 0 0 0 0 1 0 0 ...
## ..$ grey_wolf : num [1:63] 0 1 0 1 0 0 2 3 0 3 ...
## ..$ grizzly_bear : num [1:63] 0 1 0 0 0 0 0 0 0 0 ...
## ..$ marten : num [1:63] 0 1 2 0 0 0 0 0 0 0 ...
## ..$ snowshoe_hare : num [1:63] 0 5 1 0 1 5 1 3 0 0 ...
## ..$ elk : num [1:63] 0 0 7 2 0 0 0 0 0 8 ...
## ..$ moose : num [1:63] 0 0 4 8 11 1 7 7 13 3 ...
## ..$ mule_deer : num [1:63] 0 0 1 3 0 1 0 0 0 0 ...
## ..$ lynx : num [1:63] 0 0 0 0 0 1 1 2 0 0 ...
## ..$ cougar : num [1:63] 0 0 0 0 0 0 1 0 0 0 ...
## ..$ absent_black_bear : num [1:63] 9 12 6 15 16 14 8 10 14 8 ...
## ..$ absent_coyote : num [1:63] 8 13 5 17 19 17 6 9 17 7 ...
## ..$ absent_red_fox : num [1:63] 15 14 10 18 19 18 16 14 18 15 ...
## ..$ absent_white-tailed_deer: num [1:63] 3 3 2 3 8 11 3 8 13 4 ...
## ..$ absent_fisher : num [1:63] 16 14 11 19 19 18 17 15 18 15 ...
## ..$ absent_grey_wolf : num [1:63] 16 14 11 18 19 18 15 13 18 12 ...
## ..$ absent_grizzly_bear : num [1:63] 13 12 9 16 16 14 14 13 14 12 ...
## ..$ absent_marten : num [1:63] 16 14 9 19 19 18 17 16 18 15 ...
## ..$ absent_snowshoe_hare : num [1:63] 16 10 10 19 18 13 16 13 18 15 ...
## ..$ absent_elk : num [1:63] 16 15 4 17 19 18 17 16 18 7 ...
## ..$ absent_moose : num [1:63] 16 15 7 11 8 17 10 9 5 12 ...
## ..$ absent_mule_deer : num [1:63] 16 15 10 16 19 17 17 16 18 15 ...
## ..$ absent_lynx : num [1:63] 16 15 11 19 19 17 16 14 18 15 ...
## ..$ absent_cougar : num [1:63] 16 15 11 19 19 18 16 16 18 15 ...
## ..- attr(*, "spec")=
## .. .. cols(
## .. .. site = col_factor(levels = NULL, ordered = FALSE, include_na = FALSE),
## .. .. black_bear = col_double(),
## .. .. coyote = col_double(),
## .. .. red_fox = col_double(),
## .. .. `white-tailed_deer` = col_double(),
## .. .. fisher = col_double(),
## .. .. grey_wolf = col_double(),
## .. .. grizzly_bear = col_double(),
## .. .. marten = col_double(),
## .. .. snowshoe_hare = col_double(),
## .. .. elk = col_double(),
## .. .. moose = col_double(),
## .. .. mule_deer = col_double(),
## .. .. lynx = col_double(),
## .. .. cougar = col_double(),
## .. .. absent_black_bear = col_double(),
## .. .. absent_coyote = col_double(),
## .. .. absent_red_fox = col_double(),
## .. .. `absent_white-tailed_deer` = col_double(),
## .. .. absent_fisher = col_double(),
## .. .. absent_grey_wolf = col_double(),
## .. .. absent_grizzly_bear = col_double(),
## .. .. absent_marten = col_double(),
## .. .. absent_snowshoe_hare = col_double(),
## .. .. absent_elk = col_double(),
## .. .. absent_moose = col_double(),
## .. .. absent_mule_deer = col_double(),
## .. .. absent_lynx = col_double(),
## .. .. absent_cougar = col_double()
## .. .. )
## ..- attr(*, "problems")=<externalptr>
## $ total_detections: spc_tbl_ [63 × 33] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## ..$ array : chr [1:63] "LUAG" "LUAG" "LUAG" "LUBF" ...
## ..$ site_number : num [1:63] 119 124 137 104 105 12 121 126 130 132 ...
## ..$ site : Factor w/ 63 levels "LUAG_119","LUAG_124",..: 1 2 3 4 5 6 7 8 9 10 ...
## ..$ black_bear : num [1:63] 4 2 17 1 0 0 18 5 0 12 ...
## ..$ coyote : num [1:63] 21 3 23 2 0 1 28 21 2 27 ...
## ..$ red_fox : num [1:63] 4 1 2 1 0 0 1 2 0 0 ...
## ..$ white-tailed_deer: num [1:63] 62 141 153 48 22 32 187 187 10 666 ...
## ..$ domestic_dog : num [1:63] 0 1 1 0 0 0 0 0 0 0 ...
## ..$ fisher : num [1:63] 0 1 0 0 0 0 0 1 0 0 ...
## ..$ grey_wolf : num [1:63] 0 2 0 1 0 0 4 6 0 26 ...
## ..$ grizzly_bear : num [1:63] 0 1 0 0 0 0 0 0 0 0 ...
## ..$ marten : num [1:63] 0 1 3 0 0 0 0 0 0 0 ...
## ..$ snowshoe_hare : num [1:63] 0 20 1 0 1 21 2 19 0 0 ...
## ..$ elk : num [1:63] 0 0 43 2 0 0 0 0 0 66 ...
## ..$ moose : num [1:63] 0 0 4 9 20 1 16 22 148 3 ...
## ..$ mule_deer : num [1:63] 0 0 4 8 0 1 0 0 0 0 ...
## ..$ unknown : num [1:63] 0 0 2 3 0 9 1 0 12 1 ...
## ..$ unknown_ungulate : num [1:63] 0 0 41 4 0 0 0 0 7 0 ...
## ..$ lynx : num [1:63] 0 0 0 0 0 1 1 3 0 0 ...
## ..$ cougar : num [1:63] 0 0 0 0 0 0 1 0 0 0 ...
## ..$ red_squirrel : num [1:63] 0 0 0 0 0 0 0 1 0 0 ...
## ..$ other : num [1:63] 0 0 0 0 0 0 0 0 14 0 ...
## ..$ atver : num [1:63] 0 0 0 0 0 0 0 0 0 0 ...
## ..$ unknown_deer : num [1:63] 0 0 0 0 0 0 0 0 0 0 ...
## ..$ unknown_bear : num [1:63] 0 0 0 0 0 0 0 0 0 0 ...
## ..$ other_birds : num [1:63] 0 0 0 0 0 0 0 0 0 0 ...
## ..$ human : num [1:63] 0 0 0 0 0 0 0 0 0 0 ...
## ..$ staff : num [1:63] 0 0 0 0 0 0 0 0 0 0 ...
## ..$ spruce_grouse : num [1:63] 0 0 0 0 0 0 0 0 0 0 ...
## ..$ hunter : num [1:63] 0 0 0 0 0 0 0 0 0 0 ...
## ..$ ruffed_grouse : num [1:63] 0 0 0 0 0 0 0 0 0 0 ...
## ..$ raven : num [1:63] 0 0 0 0 0 0 0 0 0 0 ...
## ..$ owl : num [1:63] 0 0 0 0 0 0 0 0 0 0 ...
## ..- attr(*, "spec")=
## .. .. cols(
## .. .. array = col_character(),
## .. .. site_number = col_double(),
## .. .. site = col_factor(levels = NULL, ordered = FALSE, include_na = FALSE),
## .. .. black_bear = col_double(),
## .. .. coyote = col_double(),
## .. .. red_fox = col_double(),
## .. .. `white-tailed_deer` = col_double(),
## .. .. domestic_dog = col_double(),
## .. .. fisher = col_double(),
## .. .. grey_wolf = col_double(),
## .. .. grizzly_bear = col_double(),
## .. .. marten = col_double(),
## .. .. snowshoe_hare = col_double(),
## .. .. elk = col_double(),
## .. .. moose = col_double(),
## .. .. mule_deer = col_double(),
## .. .. unknown = col_double(),
## .. .. unknown_ungulate = col_double(),
## .. .. lynx = col_double(),
## .. .. cougar = col_double(),
## .. .. red_squirrel = col_double(),
## .. .. other = col_double(),
## .. .. atver = col_double(),
## .. .. unknown_deer = col_double(),
## .. .. unknown_bear = col_double(),
## .. .. other_birds = col_double(),
## .. .. human = col_double(),
## .. .. staff = col_double(),
## .. .. spruce_grouse = col_double(),
## .. .. hunter = col_double(),
## .. .. ruffed_grouse = col_double(),
## .. .. raven = col_double(),
## .. .. owl = col_double()
## .. .. )
## ..- attr(*, "problems")=<externalptr>
## $ presence_absence: spc_tbl_ [63 × 33] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## ..$ array : chr [1:63] "LUAG" "LUAG" "LUAG" "LUBF" ...
## ..$ site_number : num [1:63] 119 124 137 104 105 12 121 126 130 132 ...
## ..$ site : Factor w/ 63 levels "LUAG_119","LUAG_124",..: 1 2 3 4 5 6 7 8 9 10 ...
## ..$ black_bear : num [1:63] 1 1 1 1 0 0 1 1 0 1 ...
## ..$ coyote : num [1:63] 1 1 1 1 0 1 1 1 1 1 ...
## ..$ red_fox : num [1:63] 1 1 1 1 0 0 1 1 0 0 ...
## ..$ white-tailed_deer: num [1:63] 1 1 1 1 1 1 1 1 1 1 ...
## ..$ domestic_dog : num [1:63] 0 1 1 0 0 0 0 0 0 0 ...
## ..$ fisher : num [1:63] 0 1 0 0 0 0 0 1 0 0 ...
## ..$ grey_wolf : num [1:63] 0 1 0 1 0 0 1 1 0 1 ...
## ..$ grizzly_bear : num [1:63] 0 1 0 0 0 0 0 0 0 0 ...
## ..$ marten : num [1:63] 0 1 1 0 0 0 0 0 0 0 ...
## ..$ snowshoe_hare : num [1:63] 0 1 1 0 1 1 1 1 0 0 ...
## ..$ elk : num [1:63] 0 0 1 1 0 0 0 0 0 1 ...
## ..$ moose : num [1:63] 0 0 1 1 1 1 1 1 1 1 ...
## ..$ mule_deer : num [1:63] 0 0 1 1 0 1 0 0 0 0 ...
## ..$ unknown : num [1:63] 0 0 1 1 0 1 1 0 1 1 ...
## ..$ unknown_ungulate : num [1:63] 0 0 1 1 0 0 0 0 1 0 ...
## ..$ lynx : num [1:63] 0 0 0 0 0 1 1 1 0 0 ...
## ..$ cougar : num [1:63] 0 0 0 0 0 0 1 0 0 0 ...
## ..$ red_squirrel : num [1:63] 0 0 0 0 0 0 0 1 0 0 ...
## ..$ other : num [1:63] 0 0 0 0 0 0 0 0 1 0 ...
## ..$ atver : num [1:63] 0 0 0 0 0 0 0 0 0 0 ...
## ..$ unknown_deer : num [1:63] 0 0 0 0 0 0 0 0 0 0 ...
## ..$ unknown_bear : num [1:63] 0 0 0 0 0 0 0 0 0 0 ...
## ..$ other_birds : num [1:63] 0 0 0 0 0 0 0 0 0 0 ...
## ..$ human : num [1:63] 0 0 0 0 0 0 0 0 0 0 ...
## ..$ staff : num [1:63] 0 0 0 0 0 0 0 0 0 0 ...
## ..$ spruce_grouse : num [1:63] 0 0 0 0 0 0 0 0 0 0 ...
## ..$ hunter : num [1:63] 0 0 0 0 0 0 0 0 0 0 ...
## ..$ ruffed_grouse : num [1:63] 0 0 0 0 0 0 0 0 0 0 ...
## ..$ raven : num [1:63] 0 0 0 0 0 0 0 0 0 0 ...
## ..$ owl : num [1:63] 0 0 0 0 0 0 0 0 0 0 ...
## ..- attr(*, "spec")=
## .. .. cols(
## .. .. array = col_character(),
## .. .. site_number = col_double(),
## .. .. site = col_factor(levels = NULL, ordered = FALSE, include_na = FALSE),
## .. .. black_bear = col_double(),
## .. .. coyote = col_double(),
## .. .. red_fox = col_double(),
## .. .. `white-tailed_deer` = col_double(),
## .. .. domestic_dog = col_double(),
## .. .. fisher = col_double(),
## .. .. grey_wolf = col_double(),
## .. .. grizzly_bear = col_double(),
## .. .. marten = col_double(),
## .. .. snowshoe_hare = col_double(),
## .. .. elk = col_double(),
## .. .. moose = col_double(),
## .. .. mule_deer = col_double(),
## .. .. unknown = col_double(),
## .. .. unknown_ungulate = col_double(),
## .. .. lynx = col_double(),
## .. .. cougar = col_double(),
## .. .. red_squirrel = col_double(),
## .. .. other = col_double(),
## .. .. atver = col_double(),
## .. .. unknown_deer = col_double(),
## .. .. unknown_bear = col_double(),
## .. .. other_birds = col_double(),
## .. .. human = col_double(),
## .. .. staff = col_double(),
## .. .. spruce_grouse = col_double(),
## .. .. hunter = col_double(),
## .. .. ruffed_grouse = col_double(),
## .. .. raven = col_double(),
## .. .. owl = col_double()
## .. .. )
## ..- attr(*, "problems")=<externalptr>
First checks look good, but let’s remove a few species we aren’t interested in modeling for this analysis from all three data sets
# first create focal species object with only species we have enough data to model in one response metric or another
glm_focal_vars <- c('site',
'white-tailed_deer',
'black_bear',
'coyote',
'elk',
'grey_wolf',
'grizzly_bear',
'lynx',
'moose',
'mule_deer',
'red_fox',
'snowshoe_hare')
response_metrics_subset <- response_metrics %>%
map(~.x %>%
# use purrr map to select only columns that match the focal species in all data sets
select(matches(paste(glm_focal_vars,
collapse = '|')))
)
Now we should subset each data frame individually even further
We prioritize the proportional monthly detection data as it gives us the most information, so for any species we have enough (we think) data for we will keep them in this data frame, otherwise we will remove
response_metrics_subset$prop_detections <- response_metrics_subset$prop_detections %>%
# remove mule deer, red fox, and grizzly bear
select(-contains(c('red_fox',
'mule_deer',
'grizzly_bear')))
head(response_metrics_subset$prop_detections)
## # A tibble: 6 × 17
## site black_bear coyote `white-tailed_deer` grey_wolf snowshoe_hare elk
## <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 LUAG_119 4 8 13 0 0 0
## 2 LUAG_124 1 2 12 1 5 0
## 3 LUAG_137 3 6 9 0 1 7
## 4 LUBF_104 1 2 16 1 0 2
## 5 LUBF_105 0 0 11 0 1 0
## 6 LUBF_12 0 1 7 0 5 0
## # ℹ 10 more variables: moose <dbl>, lynx <dbl>, absent_black_bear <dbl>,
## # absent_coyote <dbl>, `absent_white-tailed_deer` <dbl>,
## # absent_grey_wolf <dbl>, absent_snowshoe_hare <dbl>, absent_elk <dbl>,
## # absent_moose <dbl>, absent_lynx <dbl>
Now moving onto our alternative response metrics, I’m not sure which we will use yet for the remaining three species so we will keep all three in both
Basically this code will be the inverse of the code above to simply keep only those species instead of remove them
# presence absence
response_metrics_subset$presence_absence <- response_metrics_subset$presence_absence %>%
# remove mule deer, red fox, and grizzly bear
select(contains(c('site',
'elk',
'red_fox',
'mule_deer',
'grizzly_bear')))
head(response_metrics_subset$presence_absence)
## # A tibble: 6 × 6
## site_number site elk red_fox mule_deer grizzly_bear
## <dbl> <fct> <dbl> <dbl> <dbl> <dbl>
## 1 119 LUAG_119 0 1 0 0
## 2 124 LUAG_124 0 1 0 1
## 3 137 LUAG_137 1 1 1 0
## 4 104 LUBF_104 1 1 1 0
## 5 105 LUBF_105 0 0 0 0
## 6 12 LUBF_12 0 0 1 0
# total detections
response_metrics_subset$total_detections <- response_metrics_subset$total_detections %>%
# remove mule deer, red fox, and grizzly bear
select(contains(c('site',
'red_fox',
'mule_deer',
'grizzly_bear')))
head(response_metrics_subset$total_detections)
## # A tibble: 6 × 5
## site_number site red_fox mule_deer grizzly_bear
## <dbl> <fct> <dbl> <dbl> <dbl>
## 1 119 LUAG_119 4 0 0
## 2 124 LUAG_124 1 0 1
## 3 137 LUAG_137 2 4 0
## 4 104 LUBF_104 1 8 0
## 5 105 LUBF_105 0 0 0
## 6 12 LUBF_12 0 1 0
Okay now that these are cleaned up we can remove the full response metrics list from our environment so we don’t use it
rm(response_metrics)
We also need our potential explanatory variables
In the previous script, 2_ACME_SRFN_landscape_covariate_exploration_script.Rmd we cleaned up the covariates data let’s also read that in as we will need to join it with the response metric data to run the models
covariates <- read_csv('data/processed/srfn_covariates_grouped.csv',
# also specify how site is read in
col_types = cols(site = col_factor())
)
str(covariates)
## spc_tbl_ [1,200 × 18] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ site_number : num [1:1200] 1 2 4 6 10 12 13 17 18 21 ...
## $ site : Factor w/ 60 levels "LUD_1","LUC_2",..: 1 2 3 4 5 6 7 8 9 10 ...
## $ buff_dist : num [1:1200] 250 250 250 250 250 250 250 250 250 250 ...
## $ harvest : num [1:1200] 0.432 0.342 0 0.388 0.424 ...
## $ harvest_2000 : num [1:1200] 0.355 0 0 0.179 0.424 ...
## $ harvest_pre2000: num [1:1200] 0.0763 0.3418 0 0.209 0 ...
## $ pipeline : num [1:1200] 0 0.148 0.0148 0 0 ...
## $ roads : num [1:1200] 0.00 5.99e-02 7.05e-03 7.11e-06 6.75e-03 ...
## $ seismic_lines : num [1:1200] 0.00 5.41e-05 0.00 0.00 0.00 ...
## $ veg_edges : num [1:1200] 0 0.09955 0.0129 0.00112 0.01425 ...
## $ wells : num [1:1200] 0 0 0.0183 0.0318 0.0332 ...
## $ lc_agriculture : num [1:1200] 0 0 0 0 0 0 0 0 0 0 ...
## $ lc_broadleaf : num [1:1200] 0 0.18 0 0 0 ...
## $ lc_coniferous : num [1:1200] 0.847 0 0.743 0.442 0.284 ...
## $ lc_developed : num [1:1200] 0 0.4514 0.0716 0.00837 0.04522 ...
## $ lc_grassland : num [1:1200] 0 0.3608 0.0618 0 0 ...
## $ lc_mixed : num [1:1200] 0 0 0 0 0 0 0 0 0 0 ...
## $ lc_shrub : num [1:1200] 0.15301 0.00776 0.12401 0.54941 0.6703 ...
## - attr(*, "spec")=
## .. cols(
## .. site_number = col_double(),
## .. site = col_factor(levels = NULL, ordered = FALSE, include_na = FALSE),
## .. buff_dist = col_double(),
## .. harvest = col_double(),
## .. harvest_2000 = col_double(),
## .. harvest_pre2000 = col_double(),
## .. pipeline = col_double(),
## .. roads = col_double(),
## .. seismic_lines = col_double(),
## .. veg_edges = col_double(),
## .. wells = col_double(),
## .. lc_agriculture = col_double(),
## .. lc_broadleaf = col_double(),
## .. lc_coniferous = col_double(),
## .. lc_developed = col_double(),
## .. lc_grassland = col_double(),
## .. lc_mixed = col_double(),
## .. lc_shrub = col_double()
## .. )
## - attr(*, "problems")=<externalptr>
summary(covariates)
## site_number site buff_dist harvest
## Min. : 1.00 LUD_1 : 20 Min. : 250 Min. :0.0000
## 1st Qu.: 34.00 LUC_2 : 20 1st Qu.:1438 1st Qu.:0.0879
## Median : 65.00 LUC_4 : 20 Median :2625 Median :0.2466
## Mean : 69.82 LUS_6 : 20 Mean :2625 Mean :0.2517
## 3rd Qu.:107.75 LUS_10 : 20 3rd Qu.:3812 3rd Qu.:0.3814
## Max. :141.00 LUBF_12: 20 Max. :5000 Max. :0.9863
## (Other):1080
## harvest_2000 harvest_pre2000 pipeline roads
## Min. :0.000000 Min. :0.00000 Min. :0.00000 Min. :0.000000
## 1st Qu.:0.008954 1st Qu.:0.00000 1st Qu.:0.00000 1st Qu.:0.002420
## Median :0.133834 Median :0.05305 Median :0.00450 Median :0.007065
## Mean :0.142348 Mean :0.09638 Mean :0.01031 Mean :0.007511
## 3rd Qu.:0.221274 3rd Qu.:0.14270 3rd Qu.:0.01523 3rd Qu.:0.011097
## Max. :0.856826 Max. :0.98631 Max. :0.14867 Max. :0.059875
##
## seismic_lines veg_edges wells lc_agriculture
## Min. :0.000000 Min. :0.000000 Min. :0.0000000 Min. :0.00000
## 1st Qu.:0.001827 1st Qu.:0.003484 1st Qu.:0.0008336 1st Qu.:0.00000
## Median :0.003612 Median :0.012634 Median :0.0089454 Median :0.00000
## Mean :0.004028 Mean :0.013908 Mean :0.0103535 Mean :0.03587
## 3rd Qu.:0.005451 3rd Qu.:0.021155 3rd Qu.:0.0175866 3rd Qu.:0.00000
## Max. :0.030028 Max. :0.099551 Max. :0.0957837 Max. :0.49000
##
## lc_broadleaf lc_coniferous lc_developed lc_grassland
## Min. :0.0000 Min. :0.00000 Min. :0.00000 Min. :0.000000
## 1st Qu.:0.1463 1st Qu.:0.03179 1st Qu.:0.01782 1st Qu.:0.006635
## Median :0.3010 Median :0.23137 Median :0.05463 Median :0.034291
## Mean :0.3502 Mean :0.23902 Mean :0.05948 Mean :0.055123
## 3rd Qu.:0.5250 3rd Qu.:0.38303 3rd Qu.:0.08856 3rd Qu.:0.068804
## Max. :1.0000 Max. :0.84699 Max. :0.45140 Max. :0.883334
##
## lc_mixed lc_shrub
## Min. :0.00000 Min. :0.00000
## 1st Qu.:0.00000 1st Qu.:0.04624
## Median :0.01965 Median :0.10172
## Mean :0.04277 Mean :0.15602
## 3rd Qu.:0.06350 3rd Qu.:0.20080
## Max. :0.93137 Max. :0.93212
##
We do need to subset the data so we have separate data frames for each buffer width to work with in the analysis AND to explore correlations between variables at each buffer width, as these may very with spatial scales
Let’s use a for loop to subset the data, thanks Andrew!
buffer_frames <- list()
for (i in unique(covariates$buff_dist)){
print(i)
# Subset data based on radius
df <- covariates %>%
filter(buff_dist == i)
# list of dataframes
buffer_frames <-c (buffer_frames, list(df))
}
## [1] 250
## [1] 500
## [1] 750
## [1] 1000
## [1] 1250
## [1] 1500
## [1] 1750
## [1] 2000
## [1] 2250
## [1] 2500
## [1] 2750
## [1] 3000
## [1] 3250
## [1] 3500
## [1] 3750
## [1] 4000
## [1] 4250
## [1] 4500
## [1] 4750
## [1] 5000
# name list objects so we can extract names for plotting
buffer_frames <- buffer_frames %>%
# absurdly long way to do this but for sake of time fuck it
purrr::set_names('250 meter buffer',
'500 meter buffer',
'750 meter buffer',
'1000 meter buffer',
'1250 meter buffer',
'1500 meter buffer',
'1750 meter buffer',
'2000 meter buffer',
'2250 meter buffer',
'2500 meter buffer',
'2750 meter buffer',
'3000 meter buffer',
'3250 meter buffer',
'3500 meter buffer',
'3750 meter buffer',
'4000 meter buffer',
'4250 meter buffer',
'4500 meter buffer',
'4750 meter buffer',
'5000 meter buffer')
Now we have a list with data frames for each buffer width which we can work with later.
Now that we have the covariate data formatted we need to the response metric data frames that we will use for each species and tidy up the resulting data
We will want separate data frames for each type of response metric - we will use the proportional detection data for all the species we have enough detections for, otherwise we will use either the total detections or presence absence data depending how the models fit.
# proportional detections
prop_det_data <- buffer_frames %>%
# use purrr to join data to all individual buffer frames data sets
purrr::map(
~.x %>%
# use left join so only sites with covariate data are kept
left_join(response_metrics_subset$prop_detections,
by = 'site'))
# total detections
total_det_data <- buffer_frames %>%
# use purrr to join data to all individual buffer frames data sets
purrr::map(
~.x %>%
# use left join so only sites with covariate data are kept
left_join(response_metrics_subset$total_detections,
by = 'site'))
# presence absence
pres_absen_dat <- buffer_frames %>%
# use purrr to join data to all individual buffer frames data sets
purrr::map(
~.x %>%
# use inner join so only sites with both data
inner_join(response_metrics_subset$presence_absence,
by = 'site') %>%
mutate(across(c(elk:grizzly_bear), as.factor)))
I’m going to view each of these through the RStudio environemnt to look at them in depth and will print a subset of each ehre
head(prop_det_data$`250 meter buffer`)
## # A tibble: 6 × 34
## site_number site buff_dist harvest harvest_2000 harvest_pre2000 pipeline
## <dbl> <fct> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 LUD_1 250 0.432 0.355 0.0763 0
## 2 2 LUC_2 250 0.342 0 0.342 0.148
## 3 4 LUC_4 250 0 0 0 0.0148
## 4 6 LUS_6 250 0.388 0.179 0.209 0
## 5 10 LUS_10 250 0.424 0.424 0 0
## 6 12 LUBF_12 250 0 0 0 0.0752
## # ℹ 27 more variables: roads <dbl>, seismic_lines <dbl>, veg_edges <dbl>,
## # wells <dbl>, lc_agriculture <dbl>, lc_broadleaf <dbl>, lc_coniferous <dbl>,
## # lc_developed <dbl>, lc_grassland <dbl>, lc_mixed <dbl>, lc_shrub <dbl>,
## # black_bear <dbl>, coyote <dbl>, `white-tailed_deer` <dbl>, grey_wolf <dbl>,
## # snowshoe_hare <dbl>, elk <dbl>, moose <dbl>, lynx <dbl>,
## # absent_black_bear <dbl>, absent_coyote <dbl>,
## # `absent_white-tailed_deer` <dbl>, absent_grey_wolf <dbl>, …
str(pres_absen_dat$`2000 meter buffer`)
## tibble [59 × 23] (S3: tbl_df/tbl/data.frame)
## $ site_number.x : num [1:59] 1 2 4 6 10 12 13 17 18 21 ...
## $ site : Factor w/ 64 levels "LUD_1","LUC_2",..: 1 2 3 4 5 6 7 8 9 10 ...
## $ buff_dist : num [1:59] 2000 2000 2000 2000 2000 2000 2000 2000 2000 2000 ...
## $ harvest : num [1:59] 0.381 0.476 0.252 0.421 0.576 ...
## $ harvest_2000 : num [1:59] 0.195 0.284 0.232 0.243 0.224 ...
## $ harvest_pre2000: num [1:59] 0.186 0.1917 0.0194 0.1777 0.3515 ...
## $ pipeline : num [1:59] 0.00509 0.042 0.03546 0.02548 0.00134 ...
## $ roads : num [1:59] 0.00872 0.01885 0.01674 0.01398 0.00797 ...
## $ seismic_lines : num [1:59] 0.006809 0.003832 0.007541 0.004027 0.000759 ...
## $ veg_edges : num [1:59] 0.0157 0.0332 0.0289 0.0229 0.0115 ...
## $ wells : num [1:59] 0.0164 0.0359 0.0337 0.0226 0.011 ...
## $ lc_agriculture : num [1:59] 0 0 0 0 0 0 0 0 0 0 ...
## $ lc_broadleaf : num [1:59] 0.035 0.0264 0.1201 0.1349 0.1353 ...
## $ lc_coniferous : num [1:59] 0.398 0.55 0.576 0.386 0.375 ...
## $ lc_developed : num [1:59] 0.0772 0.1714 0.1277 0.133 0.0555 ...
## $ lc_grassland : num [1:59] 0 0.08906 0.0449 0.04254 0.00478 ...
## $ lc_mixed : num [1:59] 0 0.00275 0 0.00869 0 ...
## $ lc_shrub : num [1:59] 0.49 0.16 0.132 0.294 0.429 ...
## $ site_number.y : num [1:59] 1 2 4 6 10 12 13 17 18 21 ...
## $ elk : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 2 1 1 1 ...
## $ red_fox : Factor w/ 2 levels "0","1": 1 2 1 1 1 1 2 1 1 1 ...
## $ mule_deer : Factor w/ 2 levels "0","1": 1 1 1 1 1 2 1 1 1 1 ...
## $ grizzly_bear : Factor w/ 2 levels "0","1": 1 1 1 2 1 1 1 1 1 1 ...
Let’s remove the objects we no longer need from the environment to keep our work space clean
rm(buffer_frames,
covariates,
df,
response_metrics_subset)
Before we can develop any models we need to look at your covariates and see if there are any major violations of the model assumptions of independence, e.g. variables that are highly correlated - in which case we need to choose which variable in each pair to include in a model
prop_det_data %>%
purrr::map(
~.x %>%
# select only columns with covariates not other info to simplify the plot a bit
select(harvest:lc_shrub) %>%
# use chart.correlation to produce plots for each buffer size
chart.Correlation(.,
histogram = TRUE,
method = "pearson")
)
## $`250 meter buffer`
## NULL
##
## $`500 meter buffer`
## NULL
##
## $`750 meter buffer`
## NULL
##
## $`1000 meter buffer`
## NULL
##
## $`1250 meter buffer`
## NULL
##
## $`1500 meter buffer`
## NULL
##
## $`1750 meter buffer`
## NULL
##
## $`2000 meter buffer`
## NULL
##
## $`2250 meter buffer`
## NULL
##
## $`2500 meter buffer`
## NULL
##
## $`2750 meter buffer`
## NULL
##
## $`3000 meter buffer`
## NULL
##
## $`3250 meter buffer`
## NULL
##
## $`3500 meter buffer`
## NULL
##
## $`3750 meter buffer`
## NULL
##
## $`4000 meter buffer`
## NULL
##
## $`4250 meter buffer`
## NULL
##
## $`4500 meter buffer`
## NULL
##
## $`4750 meter buffer`
## NULL
##
## $`5000 meter buffer`
## NULL
Here I summarize any pairs of highly correlated variables
750 m buffer * roads and wells (continues as buffer size increases)
1000m buffer
* wells and lc_coniferous are positively correlated starting around 750m
buffer - kind of a weird one maybe?
1250m buffer
* pipeline and wells (starts here 0.72 and continues with increasing
buffer size)
So based on this the global model for buffer size selection should generally include the following set of variables harvest_2000 + harvest_pre2000 + roads OR wells OR pipelines (depending on which is of greatest interest to the nation and ecologically releveant for each species) seismic_lines + lc_broadleaf + lc_grassland + lc_mixed + lc_shrub,
An attempt to run glms for each species with every buffer and compare models all in one section combining purr with a custom function
# create a vector with the species in the proportional detection data (prop_det_data) this one is unnecessarily long but I want to be descriptive throughout this code chunk
# pb = proportional binomial
pb_species_list <- c('black_bear',
'coyote',
'elk',
'grey_wolf',
'lynx',
'moose',
'snowshoe_hare',
'white-tailed_deer')
# create custom function to run models for a given species
run_pb_models_for_species <- function(species) {
# provide pb data
prop_det_data %>%
# use purrr to apply following function to all species
purrr::map(
~.x %>%
# run glm by pasting the species name in for the cbind function
glm(
formula = as.formula(paste0(
'cbind(`', species, '`, `absent_', species, '`) ~ ',
# use non-correlated variables
'harvest_2000 + ',
'harvest_pre2000 + ',
# 'roads + ',
'seismic_lines + ',
'wells +',
# 'lc_agriculture + ',
'lc_broadleaf + ',
'lc_grassland + ',
'lc_mixed + ',
'lc_shrub'
)),
data = .,
family = 'binomial'
)
)
}
# Iterate this function over each species in the list and run the models
pb_models_by_species <- purrr::map(pb_species_list, run_pb_models_for_species)
# Custom function to compare models for a single species and print species name
compare_pb_models <- function(models, species_name) {
cat("\nModel Selection for Species:", species_name, "\n")
pb_model_sel_results <- model.sel(models)
print(as.data.frame(pb_model_sel_results))
return(as.data.frame(pb_model_sel_results))
}
# Use map2 to iterate over each species' models and names, and compare models
pb_model_comparisons <- purrr::map2(pb_models_by_species,
pb_species_list,
compare_pb_models)
##
## Model Selection for Species: black_bear
## (Intercept) harvest_2000 harvest_pre2000 lc_broadleaf
## 250 meter buffer -2.059146 -0.3378064 -0.88233771 0.83729012
## 4500 meter buffer -2.372325 2.2975305 0.46107409 -1.52052797
## 4250 meter buffer -2.288064 2.0867732 0.18119315 -1.43470120
## 4750 meter buffer -2.495759 2.4083728 0.67605384 -1.41926797
## 3750 meter buffer -2.081110 1.7729986 -0.28456597 -1.33193564
## 3500 meter buffer -2.048327 1.6306169 -0.25427193 -1.27557220
## 500 meter buffer -2.443361 1.3809175 -0.60560101 0.92861788
## 4000 meter buffer -2.213247 1.8261586 -0.20066281 -1.22202149
## 5000 meter buffer -2.557951 2.4342661 0.64967147 -1.25074494
## 3250 meter buffer -2.039680 1.3600784 -0.21263624 -1.02686970
## 3000 meter buffer -1.995805 1.1710648 -0.07068775 -0.86206822
## 1250 meter buffer -1.932589 1.2581442 -0.89834498 0.29817876
## 2750 meter buffer -1.943458 1.1160056 0.10140965 -0.84918198
## 750 meter buffer -2.021735 2.0656310 -0.65777849 0.26566571
## 2250 meter buffer -1.940194 1.0257062 0.06023561 -0.48215407
## 1500 meter buffer -1.979067 0.7815287 -0.83634888 0.39187000
## 2000 meter buffer -1.989611 0.9486441 -0.03364114 -0.21431747
## 2500 meter buffer -1.855031 1.1158819 -0.14030644 -0.68981830
## 1750 meter buffer -1.993815 0.7102694 -0.52575637 0.09852972
## 1000 meter buffer -1.767241 1.8241159 -0.58354146 -0.02131919
## lc_grassland lc_mixed lc_shrub seismic_lines wells
## 250 meter buffer 1.6976984 0.3056115 1.68850868 -71.059104 -14.0414740
## 4500 meter buffer 5.3952849 7.2050063 -2.10437097 205.006347 -20.6939912
## 4250 meter buffer 4.1592840 6.4196267 -1.98248067 199.139132 -16.8149671
## 4750 meter buffer 6.8824661 7.5203591 -2.17060010 199.580951 -20.5415422
## 3750 meter buffer 1.5175986 5.0625727 -1.73748757 182.734060 -10.6341560
## 3500 meter buffer 1.1852300 4.4706547 -1.70254487 179.056785 -8.1553038
## 500 meter buffer 0.4620187 -0.5761446 0.73363236 -23.384577 21.6170376
## 4000 meter buffer 2.7176619 5.7025731 -1.69906265 177.476515 -9.8889509
## 5000 meter buffer 7.8856353 7.4732731 -2.07821875 186.225227 -19.5291253
## 3250 meter buffer 0.2174492 3.5205036 -1.48751335 159.682382 -0.4217571
## 3000 meter buffer -0.4108316 2.8512335 -1.31341370 141.139077 2.0059244
## 1250 meter buffer -4.1224997 -0.4974476 0.07851946 3.868440 23.8809814
## 2750 meter buffer -0.7997133 2.3257965 -1.31451190 137.700205 1.7373687
## 750 meter buffer -1.7002969 -0.4021954 -0.41501249 -1.189560 19.3466478
## 2250 meter buffer -2.4591490 1.1327165 -1.21852313 105.959747 12.8024514
## 1500 meter buffer -3.9657032 -0.4775480 0.21185283 7.290423 26.0982630
## 2000 meter buffer -3.1967359 0.4414975 -0.94487894 85.948591 18.5481405
## 2500 meter buffer -2.0323822 1.7008046 -1.23714345 112.161804 6.7981196
## 1750 meter buffer -3.5978359 0.1406642 -0.21491342 49.293051 22.8116862
## 1000 meter buffer -3.0226900 -0.6680647 -0.55283606 13.233820 12.2014057
## df logLik AICc delta weight
## 250 meter buffer 9 -118.2727 258.2190 0.000000 0.8902069689
## 4500 meter buffer 9 -122.0750 265.8235 7.604501 0.0198698465
## 4250 meter buffer 9 -122.2763 266.2262 8.007210 0.0162460357
## 4750 meter buffer 9 -122.2959 266.2654 8.046413 0.0159306913
## 3750 meter buffer 9 -122.6263 266.9260 8.707026 0.0114494403
## 3500 meter buffer 9 -122.6885 267.0504 8.831453 0.0107588362
## 500 meter buffer 9 -122.9427 267.5588 9.339858 0.0083438511
## 4000 meter buffer 9 -122.9562 267.5859 9.366976 0.0082314795
## 5000 meter buffer 9 -122.9779 267.6293 9.410393 0.0080547144
## 3250 meter buffer 9 -123.6472 268.9678 10.748824 0.0041249003
## 3000 meter buffer 9 -124.7995 271.2725 13.053517 0.0013030341
## 1250 meter buffer 9 -124.8505 271.3744 13.155491 0.0012382616
## 2750 meter buffer 9 -125.2570 272.1874 13.968480 0.0008246583
## 750 meter buffer 9 -125.5395 272.7526 14.533610 0.0006216667
## 2250 meter buffer 9 -125.5598 272.7931 14.574142 0.0006091949
## 1500 meter buffer 9 -125.5921 272.8576 14.638635 0.0005898638
## 2000 meter buffer 9 -125.7810 273.2356 15.016602 0.0004882893
## 2500 meter buffer 9 -125.8267 273.3269 15.107942 0.0004664907
## 1750 meter buffer 9 -126.1628 273.9991 15.780150 0.0003333304
## 1000 meter buffer 9 -126.2404 274.1543 15.935325 0.0003084460
##
## Model Selection for Species: coyote
## (Intercept) harvest_2000 harvest_pre2000 lc_broadleaf
## 5000 meter buffer -0.8790642 -5.487940 -5.08650049 -0.6168698
## 4750 meter buffer -0.8648903 -5.373024 -4.78964820 -0.6075930
## 4500 meter buffer -0.8266783 -5.163728 -4.71171392 -0.7046345
## 4250 meter buffer -0.8021582 -4.967429 -4.65030374 -0.8358988
## 250 meter buffer -1.4786851 -1.833862 -0.92718095 0.4866877
## 4000 meter buffer -0.8218994 -4.785163 -4.31836108 -0.8410067
## 3750 meter buffer -0.7969870 -4.260655 -3.88368194 -0.9727922
## 3500 meter buffer -0.8241528 -4.044774 -3.61853425 -0.9874046
## 3250 meter buffer -0.7710165 -3.522892 -3.32423362 -1.1125345
## 3000 meter buffer -0.7077937 -2.935783 -2.95875900 -1.3005898
## 2750 meter buffer -0.6290841 -2.660089 -2.49237779 -1.4947145
## 2250 meter buffer -0.5016087 -2.228074 -1.15521911 -1.9369423
## 2500 meter buffer -0.5222681 -2.600031 -2.01097666 -1.7237813
## 1250 meter buffer -0.4808645 -1.299509 -1.77315574 -1.1625187
## 2000 meter buffer -0.4770337 -2.095074 -0.66403219 -1.9037212
## 1500 meter buffer -0.5477439 -1.809453 -1.69954545 -1.1767928
## 1750 meter buffer -0.5506511 -2.209611 -1.33079401 -1.3971082
## 1000 meter buffer -0.5088300 -1.394205 -0.80700040 -1.2481981
## 750 meter buffer -0.4380426 -1.055380 -0.07292074 -1.3984229
## 500 meter buffer -1.1548213 -1.219980 -0.06162276 -0.1975097
## lc_grassland lc_mixed lc_shrub seismic_lines wells
## 5000 meter buffer -0.6834831 1.38638762 0.46582840 19.13493917 20.212048
## 4750 meter buffer -0.7226074 1.37845244 0.56508226 8.61401418 17.517470
## 4500 meter buffer -1.1274983 1.84466433 0.69529179 4.59655363 12.730836
## 4250 meter buffer -1.3146989 2.38676410 0.78522172 6.66951467 7.879403
## 250 meter buffer -0.1342708 -0.41394694 0.72452448 -13.31017608 -43.790703
## 4000 meter buffer -0.8459502 2.59249778 0.83899613 0.02908335 3.886720
## 3750 meter buffer -0.2682300 3.02518021 0.71790004 0.01695982 -6.515643
## 3500 meter buffer 0.0904137 2.80373954 0.65360801 1.80707997 -7.943298
## 3250 meter buffer -0.1900806 2.65426536 0.47088278 5.76144389 -13.949645
## 3000 meter buffer -0.3191547 2.38686312 0.09032889 16.30774028 -20.003976
## 2750 meter buffer -0.6941826 2.02273644 -0.31176889 28.23356408 -23.234497
## 2250 meter buffer -1.6236103 0.29240831 -1.30977758 80.72141282 -30.431442
## 2500 meter buffer -1.9337727 1.11085606 -0.68499659 49.60400306 -23.657617
## 1250 meter buffer -2.1202624 2.27779213 -0.11518959 -75.17954561 -27.566347
## 2000 meter buffer -1.4466674 -0.09410975 -1.44185324 76.45536517 -35.049764
## 1500 meter buffer -1.8752643 1.76520504 -0.17399766 -37.67398665 -26.346594
## 1750 meter buffer -1.8688520 1.06277928 -0.53542813 6.23756997 -26.173227
## 1000 meter buffer -1.4818571 0.88374379 -0.46604929 -57.76938737 -26.557698
## 750 meter buffer -0.7893212 -1.39232853 -1.38766552 -23.08032969 -30.700657
## 500 meter buffer 0.2873841 -1.14384601 -0.14483827 -39.31930225 -21.635928
## df logLik AICc delta weight
## 5000 meter buffer 9 -140.3957 302.4648 0.000000 3.985102e-01
## 4750 meter buffer 9 -141.0062 303.6859 1.221080 2.164139e-01
## 4500 meter buffer 9 -141.5589 304.7912 2.326413 1.245275e-01
## 4250 meter buffer 9 -141.8100 305.2934 2.828654 9.687350e-02
## 250 meter buffer 9 -142.1156 305.9046 3.439803 7.136671e-02
## 4000 meter buffer 9 -142.5260 306.7255 4.260689 4.734156e-02
## 3750 meter buffer 9 -143.1454 307.9643 5.499547 2.548167e-02
## 3500 meter buffer 9 -144.0604 309.7942 7.329462 1.020627e-02
## 3250 meter buffer 9 -145.0700 311.8134 9.348638 3.718849e-03
## 3000 meter buffer 9 -145.9445 313.5624 11.097660 1.551005e-03
## 2750 meter buffer 9 -146.3991 314.4717 12.006887 9.844123e-04
## 2250 meter buffer 9 -146.6496 314.9726 12.507816 7.663050e-04
## 2500 meter buffer 9 -146.7293 315.1321 12.667297 7.075724e-04
## 1250 meter buffer 9 -146.8516 315.3767 12.911954 6.261008e-04
## 2000 meter buffer 9 -146.9013 315.4761 13.011351 5.957451e-04
## 1500 meter buffer 9 -148.0363 317.7460 15.281190 1.915011e-04
## 1750 meter buffer 9 -148.7680 319.2094 16.744663 9.212598e-05
## 1000 meter buffer 9 -149.7695 321.2125 18.747668 3.384037e-05
## 750 meter buffer 9 -150.9219 323.5174 21.052584 1.068880e-05
## 500 meter buffer 9 -153.9147 329.5028 27.038043 5.360470e-07
##
## Model Selection for Species: elk
## (Intercept) harvest_2000 harvest_pre2000 lc_broadleaf
## 1250 meter buffer -2.681814 -6.690159 -1.6699857 3.5718819
## 1500 meter buffer -3.101126 -9.592601 -2.9183619 4.7455791
## 4000 meter buffer -2.635330 -11.657665 -8.3005243 5.0848358
## 4250 meter buffer -2.690113 -11.733136 -8.5545981 5.3415636
## 4750 meter buffer -2.994387 -11.303001 -8.3896156 5.7198467
## 5000 meter buffer -3.162106 -10.818276 -7.1732459 5.6931888
## 3750 meter buffer -2.634251 -11.265812 -7.4204650 4.5782132
## 4500 meter buffer -2.788975 -11.410341 -8.4648807 5.2949466
## 3500 meter buffer -2.822389 -10.154766 -6.6265786 4.2726631
## 1000 meter buffer -1.679121 -3.343239 0.8341307 0.5149961
## 3250 meter buffer -2.906651 -10.057601 -6.5674045 4.2557482
## 1750 meter buffer -2.876549 -10.185915 -2.6734567 3.6280596
## 750 meter buffer -1.563526 -2.076186 1.1528370 -0.2085301
## 3000 meter buffer -2.902798 -9.449895 -5.6906605 3.9419752
## 2000 meter buffer -2.473212 -9.897122 -2.3294108 2.5844112
## 500 meter buffer -2.266520 -1.548477 0.4742107 0.6191934
## 2750 meter buffer -2.670307 -8.580322 -3.7952685 2.9160786
## 2250 meter buffer -2.325418 -8.269284 -2.2471226 1.9751308
## 2500 meter buffer -2.391372 -8.002479 -2.6948669 2.2735395
## 250 meter buffer -2.513696 -2.220813 -0.1691255 0.3134186
## lc_grassland lc_mixed lc_shrub seismic_lines wells
## 1250 meter buffer -5.7706352 -17.797425 3.7615833 -388.5302 -19.280282
## 1500 meter buffer -5.2258682 -25.703391 5.9094570 -437.5971 15.452301
## 4000 meter buffer -11.1329089 -24.258285 3.3851726 -288.9717 92.851825
## 4250 meter buffer -9.7100812 -25.053986 2.8784649 -292.0079 104.167849
## 4750 meter buffer -3.6267003 -22.510768 0.9867135 -276.9219 107.731440
## 5000 meter buffer 0.8688698 -18.424500 -1.7835655 -262.1779 103.800251
## 3750 meter buffer -10.9120944 -22.417730 3.3719676 -259.3296 78.555302
## 4500 meter buffer -6.8695248 -23.703003 1.9183575 -266.2052 103.097616
## 3500 meter buffer -7.2582799 -21.211793 3.1617701 -225.0083 58.026235
## 1000 meter buffer -4.9898574 -10.862308 -1.5255762 -180.6189 -54.076417
## 3250 meter buffer -6.5238807 -21.361828 4.0047567 -231.1099 51.319283
## 1750 meter buffer -5.8627180 -19.789867 4.9058447 -285.4235 13.859106
## 750 meter buffer -2.0348887 -9.570460 -3.5392895 -132.7332 -58.058604
## 3000 meter buffer -5.3713296 -19.582493 3.7581835 -222.2752 37.661402
## 2000 meter buffer -6.4279742 -15.251557 3.3872545 -220.6538 8.389893
## 500 meter buffer -0.5554444 -10.497405 -1.9390325 -113.8900 -51.028563
## 2750 meter buffer -4.4217654 -13.462399 2.6925587 -190.6732 8.493926
## 2250 meter buffer -5.4713983 -11.592642 2.0542577 -178.0923 -5.294808
## 2500 meter buffer -5.5419505 -10.370334 1.7972448 -194.4078 -1.675048
## 250 meter buffer -0.1625115 -6.184284 -2.1005680 -59.2219 -48.359779
## df logLik AICc delta weight
## 1250 meter buffer 9 -56.36117 134.3958 0.00000000 2.315873e-01
## 1500 meter buffer 9 -56.37898 134.4314 0.03563585 2.274975e-01
## 4000 meter buffer 9 -56.88156 135.4366 1.04078875 1.376291e-01
## 4250 meter buffer 9 -57.14313 135.9597 1.56392675 1.059528e-01
## 4750 meter buffer 9 -57.41864 136.5108 2.11495444 8.043745e-02
## 5000 meter buffer 9 -57.57606 136.8256 2.42979721 6.872125e-02
## 3750 meter buffer 9 -57.72127 137.1160 2.72020867 5.943319e-02
## 4500 meter buffer 9 -57.81386 137.3012 2.90538355 5.417748e-02
## 3500 meter buffer 9 -59.43063 140.5347 6.13892912 1.075631e-02
## 1000 meter buffer 9 -59.59908 140.8716 6.47582055 9.088836e-03
## 3250 meter buffer 9 -59.95189 141.5773 7.18145658 6.386771e-03
## 1750 meter buffer 9 -60.83295 143.3394 8.94355783 2.646342e-03
## 750 meter buffer 9 -60.87349 143.4204 9.02464317 2.541198e-03
## 3000 meter buffer 9 -61.17107 144.0156 9.61980458 1.887126e-03
## 2000 meter buffer 9 -62.50465 146.6828 12.28696766 4.973175e-04
## 500 meter buffer 9 -62.81031 147.2941 12.89827774 3.663443e-04
## 2750 meter buffer 9 -63.46848 148.6104 14.21463633 1.896906e-04
## 2250 meter buffer 9 -64.12005 149.9136 15.51777629 9.887182e-05
## 2500 meter buffer 9 -64.18834 150.0501 15.65433897 9.234605e-05
## 250 meter buffer 9 -66.17391 154.0213 19.62547949 1.267932e-05
##
## Model Selection for Species: grey_wolf
## (Intercept) harvest_2000 harvest_pre2000 lc_broadleaf
## 5000 meter buffer -4.267763 1.6555134 2.8022407 -2.69019203
## 500 meter buffer -5.762530 -1.6774160 1.7779177 2.43302245
## 3500 meter buffer -4.159795 0.9220134 1.2832261 -1.51689396
## 4250 meter buffer -4.275641 1.8002409 1.7110811 -1.82961288
## 3750 meter buffer -4.205701 1.3575019 1.2155974 -1.53510477
## 4750 meter buffer -4.234019 1.6677947 2.3559456 -2.27027649
## 4000 meter buffer -4.333802 1.6119414 1.3935156 -1.49637795
## 4500 meter buffer -4.211303 1.8060651 2.0504595 -2.02085914
## 750 meter buffer -4.929309 -0.2810575 1.7051863 1.05979292
## 3250 meter buffer -4.116175 0.2615882 0.9954575 -1.15396057
## 1250 meter buffer -3.567545 -1.0884599 0.1389096 -0.22277993
## 1500 meter buffer -3.411943 -1.8496180 0.4488252 -0.35062506
## 250 meter buffer -4.373220 -1.8398068 0.3949764 1.40566435
## 1750 meter buffer -3.341609 -1.9677748 0.8406549 -0.58153304
## 3000 meter buffer -3.836095 -0.1226713 0.5879639 -0.99559914
## 2250 meter buffer -3.109082 -1.1701281 1.7203356 -1.31536983
## 2000 meter buffer -3.280202 -1.7481448 1.9125078 -1.07461065
## 1000 meter buffer -3.714102 -0.7841404 0.6761526 -0.08258719
## 2750 meter buffer -3.493111 -0.3896048 0.4940127 -0.96022726
## 2500 meter buffer -3.244753 -0.9031487 0.6803183 -0.97381858
## lc_grassland lc_mixed lc_shrub seismic_lines wells
## 5000 meter buffer 14.12367738 21.315689 -3.2829858 279.67821 -51.2629282
## 500 meter buffer 1.41101104 3.797738 4.9646889 51.87586 27.1031304
## 3500 meter buffer 7.00382555 16.555700 -1.6080870 224.45338 -23.6117412
## 4250 meter buffer 10.07454957 18.323180 -2.4407659 235.03331 -34.8847852
## 3750 meter buffer 7.86173736 17.034863 -1.7720076 220.35778 -27.8883051
## 4750 meter buffer 11.37290598 19.792536 -2.8585587 250.76739 -40.7385090
## 4000 meter buffer 9.52974950 17.730029 -2.0114955 217.36814 -28.6578351
## 4500 meter buffer 10.30915615 18.914575 -2.5737160 234.94126 -38.9732939
## 750 meter buffer -1.01184944 3.496699 2.1542023 75.89291 41.5291172
## 3250 meter buffer 4.67600110 15.451310 -0.9567911 194.06970 -8.7446097
## 1250 meter buffer -3.19473208 7.109202 1.7565921 15.43382 21.7576902
## 1500 meter buffer -3.37322645 8.121376 1.3764186 25.32328 19.3277033
## 250 meter buffer 1.78354289 2.430543 2.7754999 34.70254 -8.0095751
## 1750 meter buffer -3.48731179 9.368741 0.8818826 53.60763 13.4591661
## 3000 meter buffer 2.54667215 14.234646 -0.4899263 150.30708 -5.4386417
## 2250 meter buffer -3.37433411 10.280217 -1.0714633 124.87656 -0.6351178
## 2000 meter buffer -2.76483197 9.780781 -0.4411610 115.97247 4.5511334
## 1000 meter buffer -1.82066702 4.877123 1.7963308 34.89441 15.8663831
## 2750 meter buffer 0.02791245 12.677881 -0.4045565 115.60673 -3.4105729
## 2500 meter buffer -3.15029162 10.956116 -0.4878997 100.20504 5.2179790
## df logLik AICc delta weight
## 5000 meter buffer 9 -74.99450 171.6625 0.0000000 0.250776715
## 500 meter buffer 9 -75.22719 172.1279 0.4653877 0.198714494
## 3500 meter buffer 9 -76.26121 174.1959 2.5334113 0.070658422
## 4250 meter buffer 9 -76.28321 174.2399 2.5774232 0.069120502
## 3750 meter buffer 9 -76.31711 174.3077 2.6452187 0.066816738
## 4750 meter buffer 9 -76.33905 174.3516 2.6890960 0.065366832
## 4000 meter buffer 9 -76.36532 174.4041 2.7416339 0.063672070
## 4500 meter buffer 9 -76.60844 174.8904 3.2278878 0.049929853
## 750 meter buffer 9 -76.77219 175.2178 3.5553694 0.042388550
## 3250 meter buffer 9 -77.23095 176.1354 4.4729091 0.026792136
## 1250 meter buffer 9 -77.25268 176.1788 4.5163517 0.026216451
## 1500 meter buffer 9 -77.59307 176.8596 5.1971300 0.018652832
## 250 meter buffer 9 -78.18788 178.0492 6.3867495 0.010290161
## 1750 meter buffer 9 -78.29433 178.2621 6.5996661 0.009250984
## 3000 meter buffer 9 -78.41607 178.5056 6.8431372 0.008190659
## 2250 meter buffer 9 -78.57896 178.8314 7.1689096 0.006959504
## 2000 meter buffer 9 -78.60447 178.8824 7.2199322 0.006784203
## 1000 meter buffer 9 -79.04131 179.7561 8.0936113 0.004383105
## 2750 meter buffer 9 -79.55611 180.7857 9.1232107 0.002619432
## 2500 meter buffer 9 -79.63680 180.9471 9.2846029 0.002416358
##
## Model Selection for Species: lynx
## (Intercept) harvest_2000 harvest_pre2000 lc_broadleaf
## 500 meter buffer -4.638798 2.188900 1.7925432 0.1910742
## 750 meter buffer -3.363738 3.316632 2.1511847 -1.2662431
## 1500 meter buffer -2.014705 2.156057 3.1970223 -2.1224406
## 1750 meter buffer -1.911235 2.025076 3.1905282 -2.1740819
## 5000 meter buffer -3.445486 3.854474 7.8096569 -4.2867685
## 1250 meter buffer -2.122074 2.606918 2.8187974 -2.3130125
## 1000 meter buffer -2.463963 2.839992 2.5963825 -2.1205547
## 4750 meter buffer -3.228794 3.427634 7.1840843 -3.9564187
## 4500 meter buffer -3.048877 3.425353 6.7310356 -3.7006338
## 2000 meter buffer -1.833974 2.058312 3.8285921 -2.4075812
## 4250 meter buffer -2.975361 3.092680 6.4661854 -3.6042517
## 2250 meter buffer -1.806369 2.115197 3.8118564 -2.6025584
## 4000 meter buffer -2.836414 2.585671 5.8358009 -3.2606681
## 3500 meter buffer -2.637542 2.436327 5.3612957 -3.4600274
## 3750 meter buffer -2.716822 2.662083 5.4168895 -3.3310330
## 3250 meter buffer -2.544037 1.796901 5.2079978 -3.0540838
## 2500 meter buffer -1.816007 1.973550 3.8062152 -2.5542238
## 3000 meter buffer -2.308146 1.762154 4.8355802 -2.7613587
## 2750 meter buffer -2.100276 1.837350 4.2652158 -2.5736326
## 250 meter buffer -3.035887 -0.649130 0.6592757 -0.6453718
## lc_grassland lc_mixed lc_shrub seismic_lines wells
## 500 meter buffer -0.33833666 2.0603815 1.9860741 7.7418410 42.0726557
## 750 meter buffer -4.26216070 1.6666314 -0.6897007 14.8009193 27.6118854
## 1500 meter buffer -12.15271363 3.3152505 -2.7817060 -49.6910985 17.2418942
## 1750 meter buffer -14.27717468 3.8342442 -2.9886307 -60.9107141 20.6903781
## 5000 meter buffer 13.15514501 19.8739446 -4.0878674 66.8915095 -39.5827092
## 1250 meter buffer -8.90053358 3.6388111 -2.4424652 -32.4122637 9.2795419
## 1000 meter buffer -5.79899889 2.3594124 -1.5528189 -3.6435035 3.6468649
## 4750 meter buffer 9.74701145 18.0291414 -3.8070291 35.4188872 -28.9470505
## 4500 meter buffer 7.14759949 16.4744346 -3.6445517 16.9267394 -26.9069998
## 2000 meter buffer -13.04828431 4.6973390 -3.6934003 -46.7609149 15.0537007
## 4250 meter buffer 5.33549754 15.2952417 -3.6818718 30.5937604 -21.4433876
## 2250 meter buffer -12.44895274 6.1457926 -3.8834363 -50.6324236 15.4924741
## 4000 meter buffer 2.51352340 13.7933172 -3.5209046 7.9171481 -7.6926952
## 3500 meter buffer 0.88760036 12.8526403 -3.3906093 39.3497087 -13.7010964
## 3750 meter buffer 1.62635917 12.9499435 -3.3546784 23.1638784 -13.3296181
## 3250 meter buffer -0.91301148 11.6532278 -3.5528727 0.9716624 3.3452942
## 2500 meter buffer -9.77267053 6.6594612 -3.7541280 -73.2581881 12.7841480
## 3000 meter buffer -2.53286185 9.5965548 -3.5541090 -36.5317170 4.6944040
## 2750 meter buffer -5.20369551 7.9021737 -3.5698783 -57.8557842 8.7067708
## 250 meter buffer 0.07101097 0.4347604 1.7039200 -9.2477270 0.8116645
## df logLik AICc delta weight
## 500 meter buffer 9 -78.62374 178.9210 0.000000 9.648048e-01
## 750 meter buffer 9 -82.61504 186.9035 7.982586 1.782555e-02
## 1500 meter buffer 9 -84.33310 190.3397 11.418715 3.198136e-03
## 1750 meter buffer 9 -84.35443 190.3823 11.461361 3.130665e-03
## 5000 meter buffer 9 -84.53782 190.7491 11.828157 2.606080e-03
## 1250 meter buffer 9 -84.54318 190.7598 11.838877 2.592149e-03
## 1000 meter buffer 9 -84.91909 191.5117 12.590695 1.779938e-03
## 4750 meter buffer 9 -85.42391 192.5213 13.600339 1.074393e-03
## 4500 meter buffer 9 -85.92674 193.5269 14.605984 6.498160e-04
## 2000 meter buffer 9 -86.08610 193.8457 14.924717 5.540874e-04
## 4250 meter buffer 9 -86.23031 194.1341 15.213131 4.796782e-04
## 2250 meter buffer 9 -86.66011 194.9937 16.072735 3.120968e-04
## 4000 meter buffer 9 -86.84315 195.3598 16.438820 2.598933e-04
## 3500 meter buffer 9 -87.04317 195.7598 16.838853 2.127792e-04
## 3750 meter buffer 9 -87.24150 196.1565 17.235517 1.744996e-04
## 3250 meter buffer 9 -87.46720 196.6079 17.686913 1.392436e-04
## 2500 meter buffer 9 -87.89951 197.4725 18.551529 9.037039e-05
## 3000 meter buffer 9 -88.27422 198.2219 19.300956 6.212840e-05
## 2750 meter buffer 9 -88.58266 198.8388 19.917829 4.563919e-05
## 250 meter buffer 9 -90.31836 202.3102 23.389229 8.045127e-06
##
## Model Selection for Species: moose
## (Intercept) harvest_2000 harvest_pre2000 lc_broadleaf
## 500 meter buffer -2.2301609 -0.7875774 0.7698777 2.00379740
## 750 meter buffer -1.9179235 -0.5592863 1.0960012 1.66542760
## 250 meter buffer -2.3241198 -0.5110314 -0.6715524 1.75141880
## 1000 meter buffer -1.3660374 0.4848453 1.1504745 0.93213457
## 3750 meter buffer -0.2287966 1.5613611 1.4406725 -0.75649073
## 1750 meter buffer -0.9155644 1.1536271 1.5944787 0.11715174
## 3500 meter buffer -0.3227275 1.5447327 1.4097746 -0.69325634
## 4000 meter buffer -0.3119877 1.4429672 1.4382023 -0.46744021
## 2000 meter buffer -0.9152462 1.3164230 1.6713940 0.12256165
## 1500 meter buffer -1.0427061 1.0166686 1.2935874 0.33197950
## 4500 meter buffer -0.3440631 1.4886848 1.4718373 -0.17752514
## 4250 meter buffer -0.3836815 1.5297145 1.5769807 -0.36047832
## 1250 meter buffer -1.1941955 0.7979169 1.0875110 0.62792960
## 4750 meter buffer -0.2889701 1.3419989 1.2374821 0.01430409
## 5000 meter buffer -0.3095362 1.3434390 1.2945983 0.08528960
## 2250 meter buffer -0.8266371 1.4241393 1.4774349 0.03461669
## 3250 meter buffer -0.4630858 1.5006025 1.4487979 -0.47463117
## 2500 meter buffer -0.6883477 1.4784096 1.2476576 -0.03811787
## 2750 meter buffer -0.6214425 1.5134475 1.1718354 -0.11339635
## 3000 meter buffer -0.5319969 1.5143633 1.2352276 -0.24036218
## lc_grassland lc_mixed lc_shrub seismic_lines wells
## 500 meter buffer 3.9226120 2.69373315 3.4263290 -64.64828 -28.05807
## 750 meter buffer 3.6695298 2.58759907 2.6793639 -56.16744 -32.58800
## 250 meter buffer 2.4114288 2.26748550 2.9020550 -23.20201 -15.46067
## 1000 meter buffer 2.5884135 1.32238164 0.5622808 -15.38316 -39.73788
## 3750 meter buffer -4.7011072 4.05169405 -3.7503459 40.44538 -47.43275
## 1750 meter buffer 1.6812222 -1.12360632 -1.9765218 68.80572 -47.59561
## 3500 meter buffer -3.9045537 3.87394318 -3.4746360 44.37860 -46.68728
## 4000 meter buffer -4.1201866 3.86176789 -3.7304451 20.53772 -41.54811
## 2000 meter buffer 1.4268416 -0.77678587 -2.2796937 69.37404 -46.25686
## 1500 meter buffer 2.1368082 -1.13657723 -1.4439454 58.29034 -43.54578
## 4500 meter buffer -3.5495752 3.57075801 -3.7595552 -8.39386 -39.27685
## 4250 meter buffer -2.9072933 3.78139814 -3.8593298 15.71576 -42.01169
## 1250 meter buffer 2.3410305 0.08681804 -0.4868094 21.73740 -40.91531
## 4750 meter buffer -4.5813973 2.76000516 -3.7956725 -25.97033 -32.24342
## 5000 meter buffer -4.2265366 2.58627206 -3.9576331 -28.77138 -30.45687
## 2250 meter buffer 0.5750740 0.11148007 -2.4552013 58.63542 -44.49240
## 3250 meter buffer -2.7204273 3.13540402 -3.1621727 41.86992 -44.77615
## 2500 meter buffer -0.8134624 1.00735284 -2.6230306 37.93657 -41.90972
## 2750 meter buffer -1.2435174 1.41803809 -2.7482263 33.43772 -41.63385
## 3000 meter buffer -2.2179314 1.83847871 -2.8541132 31.59953 -41.98404
## df logLik AICc delta weight
## 500 meter buffer 9 -158.7347 339.1429 0.000000 9.883570e-01
## 750 meter buffer 9 -163.6239 348.9213 9.778343 7.440012e-03
## 250 meter buffer 9 -164.2312 350.1360 10.993049 4.053252e-03
## 1000 meter buffer 9 -168.0911 357.8557 18.712815 8.540391e-05
## 3750 meter buffer 9 -169.6350 360.9434 21.800493 1.823883e-05
## 1750 meter buffer 9 -170.4613 362.5961 23.453187 7.982133e-06
## 3500 meter buffer 9 -170.6361 362.9456 23.802712 6.702249e-06
## 4000 meter buffer 9 -170.8873 363.4481 24.305193 5.213247e-06
## 2000 meter buffer 9 -170.9417 363.5569 24.413988 4.937233e-06
## 1500 meter buffer 9 -171.0275 363.7284 24.585514 4.531451e-06
## 4500 meter buffer 9 -171.3676 364.4087 25.265766 3.224946e-06
## 4250 meter buffer 9 -171.4531 364.5796 25.436658 2.960831e-06
## 1250 meter buffer 9 -171.6322 364.9378 25.794853 2.475327e-06
## 4750 meter buffer 9 -171.6445 364.9624 25.819472 2.445044e-06
## 5000 meter buffer 9 -171.7176 365.1086 25.965705 2.272651e-06
## 2250 meter buffer 9 -172.2814 366.2363 27.093378 1.293188e-06
## 3250 meter buffer 9 -172.4848 366.6430 27.500083 1.055229e-06
## 2500 meter buffer 9 -173.3166 368.3066 29.163696 4.593014e-07
## 2750 meter buffer 9 -173.6910 369.0555 29.912590 3.158475e-07
## 3000 meter buffer 9 -173.8592 369.3918 30.248922 2.669586e-07
##
## Model Selection for Species: snowshoe_hare
## (Intercept) harvest_2000 harvest_pre2000 lc_broadleaf
## 4000 meter buffer -0.8635970 -7.0383983 7.087796 -4.733352
## 3500 meter buffer -0.8333932 -6.0722844 5.908161 -4.454474
## 3750 meter buffer -0.8822427 -6.6679669 6.475600 -4.460603
## 4250 meter buffer -0.8092547 -6.6721939 7.233734 -4.929891
## 3250 meter buffer -0.8496310 -5.6672635 5.513688 -4.256570
## 4500 meter buffer -0.7617888 -5.9427552 6.970662 -4.856169
## 4750 meter buffer -0.7759291 -5.7173012 7.011581 -4.808025
## 2000 meter buffer -0.7105139 -6.2466944 6.137331 -3.946574
## 250 meter buffer -1.3164060 -0.5092921 1.006582 -1.245722
## 5000 meter buffer -0.8925434 -5.0474197 7.458819 -5.077472
## 3000 meter buffer -0.8843952 -4.8928575 5.290588 -3.959757
## 2250 meter buffer -0.6833235 -5.9829256 6.228984 -3.996968
## 1750 meter buffer -0.6108544 -5.3528186 5.453430 -3.888911
## 2500 meter buffer -0.7252853 -5.3213424 5.812407 -3.922944
## 2750 meter buffer -0.8397297 -4.8059990 5.400768 -3.776883
## 1500 meter buffer -0.5492953 -4.3791511 4.736385 -3.735853
## 1250 meter buffer -0.4735189 -3.4726757 4.128543 -3.522310
## 1000 meter buffer -0.5906434 -2.8563772 3.490384 -3.048234
## 500 meter buffer -1.4746455 -1.9725971 1.696574 -1.224776
## 750 meter buffer -1.0135047 -1.9582852 1.881091 -2.044391
## lc_grassland lc_mixed lc_shrub seismic_lines
## 4000 meter buffer 2.02051756 9.20437113 -3.434223413 90.475010
## 3500 meter buffer 2.39228077 10.29217178 -3.083065745 44.854106
## 3750 meter buffer 2.49462686 8.87942589 -3.109586726 67.615331
## 4250 meter buffer 1.70632777 10.02437232 -3.592812489 96.396861
## 3250 meter buffer 1.97439273 10.18732646 -3.014340098 26.524675
## 4500 meter buffer 1.13322980 10.58070379 -3.745895642 71.440962
## 4750 meter buffer 1.02186669 11.01639168 -3.938605921 63.074744
## 2000 meter buffer -2.78247604 0.06920634 -2.465937623 133.601692
## 250 meter buffer -4.13441378 -1.29557314 -0.005035104 -7.872473
## 5000 meter buffer 2.72840467 12.26517125 -4.201314560 97.252420
## 3000 meter buffer 1.46046552 8.48959435 -2.780990055 30.631418
## 2250 meter buffer -3.04798507 1.64445318 -2.709271464 118.464512
## 1750 meter buffer -3.01438096 -1.10214536 -2.601045294 133.675570
## 2500 meter buffer -1.92479648 3.29518790 -2.671741163 91.282696
## 2750 meter buffer -0.05034923 5.83898049 -2.599260731 47.917897
## 1500 meter buffer -3.15095804 -0.85356512 -2.463322087 114.406212
## 1250 meter buffer -3.09010615 -0.78464199 -2.197572964 70.643291
## 1000 meter buffer -2.42065208 -1.01832227 -1.538858761 35.333186
## 500 meter buffer -2.41430452 -0.44469555 1.159795198 -26.169242
## 750 meter buffer -2.66022306 -0.07981444 -0.205713578 -29.244289
## wells df logLik AICc delta weight
## 4000 meter buffer 21.6282311 9 -123.6466 268.9666 0.0000000 2.766139e-01
## 3500 meter buffer 15.3326894 9 -123.8853 269.4440 0.4773261 2.178833e-01
## 3750 meter buffer 19.5051908 9 -124.2061 270.0857 1.1190995 1.580755e-01
## 4250 meter buffer 16.4464590 9 -124.3371 270.3477 1.3811018 1.386665e-01
## 3250 meter buffer 17.1324643 9 -124.5278 270.7290 1.7623740 1.145986e-01
## 4500 meter buffer 16.5752711 9 -125.8147 273.3030 4.3363062 3.164150e-02
## 4750 meter buffer 19.8078487 9 -126.5962 274.8659 5.8992933 1.448301e-02
## 2000 meter buffer 5.3199660 9 -126.7540 275.1814 6.2147653 1.236958e-02
## 250 meter buffer -0.7544795 9 -126.8176 275.3087 6.3420873 1.160666e-02
## 5000 meter buffer 7.6154507 9 -127.1412 275.9559 6.9892796 8.397910e-03
## 3000 meter buffer 9.8736898 9 -127.4494 276.5722 7.6055869 6.170805e-03
## 2250 meter buffer 8.4406742 9 -127.6556 276.9847 8.0180938 5.020732e-03
## 1750 meter buffer -2.7496297 9 -128.4566 278.5867 9.6200036 2.253807e-03
## 2500 meter buffer 6.4445539 9 -129.3853 280.4440 11.4773952 8.904085e-04
## 2750 meter buffer 7.3371218 9 -129.6434 280.9602 11.9935538 6.878708e-04
## 1500 meter buffer -9.5311600 9 -130.1423 281.9581 12.9914777 4.176480e-04
## 1250 meter buffer -13.9295104 9 -131.0609 283.7953 14.8286874 1.666731e-04
## 1000 meter buffer -15.2974449 9 -132.4248 286.5231 17.5565016 4.261163e-05
## 500 meter buffer -5.3032805 9 -133.6967 289.0670 20.1003043 1.194396e-05
## 750 meter buffer -1.4744239 9 -136.1483 293.9701 25.0034528 1.029066e-06
##
## Model Selection for Species: white-tailed_deer
## (Intercept) harvest_2000 harvest_pre2000 lc_broadleaf
## 4250 meter buffer -1.1822056 1.14343043 -1.8834843 2.802128
## 4500 meter buffer -1.2038471 1.21415878 -1.9982928 2.932885
## 4000 meter buffer -1.1289590 1.04233940 -1.9146238 2.685332
## 5000 meter buffer -1.2598819 1.62499973 -2.1683633 3.022530
## 4750 meter buffer -1.2263757 1.33988705 -2.0945529 3.004885
## 3750 meter buffer -1.0202517 0.98989688 -1.9877274 2.531560
## 3500 meter buffer -0.9879060 0.87157660 -2.0010532 2.466731
## 3250 meter buffer -0.9625354 0.85494359 -1.8809632 2.480554
## 3000 meter buffer -0.8609327 0.72568260 -1.9435536 2.455735
## 2750 meter buffer -0.7531394 0.46589217 -2.1471248 2.424378
## 2500 meter buffer -0.6365687 0.19400560 -2.0400752 2.293254
## 2250 meter buffer -0.5603410 0.02568109 -1.6805481 2.193318
## 250 meter buffer -0.8283441 -0.32007758 -0.8484051 2.669069
## 2000 meter buffer -0.5690241 -0.07473877 -1.4270125 2.272065
## 1750 meter buffer -0.5672793 -0.16619208 -1.5205997 2.386394
## 1000 meter buffer -0.6073692 1.01263407 -1.7999201 2.605424
## 1500 meter buffer -0.5179250 -0.01768650 -1.6083860 2.433740
## 1250 meter buffer -0.6387061 0.47234607 -1.9229082 2.601845
## 500 meter buffer -1.0782608 0.60665680 -0.9689404 3.011916
## 750 meter buffer -0.7888550 0.60091446 -1.3461206 2.699542
## lc_grassland lc_mixed lc_shrub seismic_lines
## 4250 meter buffer 11.607434 14.220662 -1.115235082 -80.55536
## 4500 meter buffer 12.255756 13.973197 -1.086811061 -92.80220
## 4000 meter buffer 10.595938 14.348802 -1.115987071 -70.87871
## 5000 meter buffer 13.912499 13.559719 -1.314789347 -93.22439
## 4750 meter buffer 12.839041 13.585375 -1.202844022 -94.10298
## 3750 meter buffer 9.137674 14.471510 -1.116846791 -64.57006
## 3500 meter buffer 8.404464 14.547320 -1.037855043 -58.28079
## 3250 meter buffer 7.467349 14.137400 -1.001448459 -55.50837
## 3000 meter buffer 5.801788 13.382764 -0.881081349 -57.94611
## 2750 meter buffer 4.293622 13.155888 -0.655709373 -63.21303
## 2500 meter buffer 2.877479 12.992145 -0.568562928 -61.88847
## 2250 meter buffer 2.176251 12.734835 -0.553861307 -62.69667
## 250 meter buffer 1.535771 3.906366 0.838543727 -45.31721
## 2000 meter buffer 2.231763 12.280033 -0.410576556 -72.65662
## 1750 meter buffer 1.931654 11.351970 0.009169897 -87.29078
## 1000 meter buffer 1.500682 7.050765 1.110916576 -121.40003
## 1500 meter buffer 1.820417 9.171592 0.303250874 -98.86607
## 1250 meter buffer 1.460169 8.229826 0.862744213 -110.77848
## 500 meter buffer 1.371856 3.599306 0.996997687 -52.83966
## 750 meter buffer 1.546146 5.146763 1.310522934 -88.05679
## wells df logLik AICc delta weight
## 4250 meter buffer -1.18409781 9 -180.7871 383.2477 0.0000000 2.604575e-01
## 4500 meter buffer -0.04458674 9 -180.9312 383.5359 0.2881926 2.255052e-01
## 4000 meter buffer -1.82040186 9 -181.1819 384.0373 0.7896184 1.754985e-01
## 5000 meter buffer -3.82891881 9 -181.2818 384.2371 0.9894219 1.588132e-01
## 4750 meter buffer 0.25235450 9 -181.4040 384.4815 1.2338516 1.405430e-01
## 3750 meter buffer -3.00710711 9 -182.8823 387.4380 4.1903378 3.204915e-02
## 3500 meter buffer -3.11237315 9 -184.6046 390.8827 7.6350076 5.725534e-03
## 3250 meter buffer -3.68285995 9 -186.2825 394.2386 10.9908669 1.069302e-03
## 3000 meter buffer -1.99354774 9 -188.0639 397.8012 14.5534884 1.800889e-04
## 2750 meter buffer -0.02466137 9 -188.4675 398.6084 15.3607220 1.202814e-04
## 2500 meter buffer 0.54562503 9 -189.7066 401.0867 17.8390218 3.483714e-05
## 2250 meter buffer -0.65948101 9 -192.2718 406.2171 22.9693942 2.679145e-06
## 250 meter buffer -8.56110993 9 -194.3452 410.3639 27.1161694 3.369267e-07
## 2000 meter buffer -1.00919284 9 -194.3647 410.4028 27.1551050 3.304309e-07
## 1750 meter buffer 0.23507559 9 -196.5420 414.7575 31.5097558 3.745246e-08
## 1000 meter buffer -11.07039650 9 -198.7540 419.1815 35.9337720 4.100317e-09
## 1500 meter buffer -1.72211704 9 -200.6176 422.9087 39.6610075 6.360020e-10
## 1250 meter buffer -1.39095318 9 -201.5449 424.7633 41.5156356 2.516118e-10
## 500 meter buffer 5.02340281 9 -202.0697 425.8129 42.5651836 1.488760e-10
## 750 meter buffer -6.34253628 9 -205.4496 432.5726 49.3248939 5.069583e-12
# Name the list elements by species for clarity
names(pb_model_comparisons) <- pb_species_list
# View comparisons for each species
pb_model_comparisons
## $black_bear
## (Intercept) harvest_2000 harvest_pre2000 lc_broadleaf
## 250 meter buffer -2.059146 -0.3378064 -0.88233771 0.83729012
## 4500 meter buffer -2.372325 2.2975305 0.46107409 -1.52052797
## 4250 meter buffer -2.288064 2.0867732 0.18119315 -1.43470120
## 4750 meter buffer -2.495759 2.4083728 0.67605384 -1.41926797
## 3750 meter buffer -2.081110 1.7729986 -0.28456597 -1.33193564
## 3500 meter buffer -2.048327 1.6306169 -0.25427193 -1.27557220
## 500 meter buffer -2.443361 1.3809175 -0.60560101 0.92861788
## 4000 meter buffer -2.213247 1.8261586 -0.20066281 -1.22202149
## 5000 meter buffer -2.557951 2.4342661 0.64967147 -1.25074494
## 3250 meter buffer -2.039680 1.3600784 -0.21263624 -1.02686970
## 3000 meter buffer -1.995805 1.1710648 -0.07068775 -0.86206822
## 1250 meter buffer -1.932589 1.2581442 -0.89834498 0.29817876
## 2750 meter buffer -1.943458 1.1160056 0.10140965 -0.84918198
## 750 meter buffer -2.021735 2.0656310 -0.65777849 0.26566571
## 2250 meter buffer -1.940194 1.0257062 0.06023561 -0.48215407
## 1500 meter buffer -1.979067 0.7815287 -0.83634888 0.39187000
## 2000 meter buffer -1.989611 0.9486441 -0.03364114 -0.21431747
## 2500 meter buffer -1.855031 1.1158819 -0.14030644 -0.68981830
## 1750 meter buffer -1.993815 0.7102694 -0.52575637 0.09852972
## 1000 meter buffer -1.767241 1.8241159 -0.58354146 -0.02131919
## lc_grassland lc_mixed lc_shrub seismic_lines wells
## 250 meter buffer 1.6976984 0.3056115 1.68850868 -71.059104 -14.0414740
## 4500 meter buffer 5.3952849 7.2050063 -2.10437097 205.006347 -20.6939912
## 4250 meter buffer 4.1592840 6.4196267 -1.98248067 199.139132 -16.8149671
## 4750 meter buffer 6.8824661 7.5203591 -2.17060010 199.580951 -20.5415422
## 3750 meter buffer 1.5175986 5.0625727 -1.73748757 182.734060 -10.6341560
## 3500 meter buffer 1.1852300 4.4706547 -1.70254487 179.056785 -8.1553038
## 500 meter buffer 0.4620187 -0.5761446 0.73363236 -23.384577 21.6170376
## 4000 meter buffer 2.7176619 5.7025731 -1.69906265 177.476515 -9.8889509
## 5000 meter buffer 7.8856353 7.4732731 -2.07821875 186.225227 -19.5291253
## 3250 meter buffer 0.2174492 3.5205036 -1.48751335 159.682382 -0.4217571
## 3000 meter buffer -0.4108316 2.8512335 -1.31341370 141.139077 2.0059244
## 1250 meter buffer -4.1224997 -0.4974476 0.07851946 3.868440 23.8809814
## 2750 meter buffer -0.7997133 2.3257965 -1.31451190 137.700205 1.7373687
## 750 meter buffer -1.7002969 -0.4021954 -0.41501249 -1.189560 19.3466478
## 2250 meter buffer -2.4591490 1.1327165 -1.21852313 105.959747 12.8024514
## 1500 meter buffer -3.9657032 -0.4775480 0.21185283 7.290423 26.0982630
## 2000 meter buffer -3.1967359 0.4414975 -0.94487894 85.948591 18.5481405
## 2500 meter buffer -2.0323822 1.7008046 -1.23714345 112.161804 6.7981196
## 1750 meter buffer -3.5978359 0.1406642 -0.21491342 49.293051 22.8116862
## 1000 meter buffer -3.0226900 -0.6680647 -0.55283606 13.233820 12.2014057
## df logLik AICc delta weight
## 250 meter buffer 9 -118.2727 258.2190 0.000000 0.8902069689
## 4500 meter buffer 9 -122.0750 265.8235 7.604501 0.0198698465
## 4250 meter buffer 9 -122.2763 266.2262 8.007210 0.0162460357
## 4750 meter buffer 9 -122.2959 266.2654 8.046413 0.0159306913
## 3750 meter buffer 9 -122.6263 266.9260 8.707026 0.0114494403
## 3500 meter buffer 9 -122.6885 267.0504 8.831453 0.0107588362
## 500 meter buffer 9 -122.9427 267.5588 9.339858 0.0083438511
## 4000 meter buffer 9 -122.9562 267.5859 9.366976 0.0082314795
## 5000 meter buffer 9 -122.9779 267.6293 9.410393 0.0080547144
## 3250 meter buffer 9 -123.6472 268.9678 10.748824 0.0041249003
## 3000 meter buffer 9 -124.7995 271.2725 13.053517 0.0013030341
## 1250 meter buffer 9 -124.8505 271.3744 13.155491 0.0012382616
## 2750 meter buffer 9 -125.2570 272.1874 13.968480 0.0008246583
## 750 meter buffer 9 -125.5395 272.7526 14.533610 0.0006216667
## 2250 meter buffer 9 -125.5598 272.7931 14.574142 0.0006091949
## 1500 meter buffer 9 -125.5921 272.8576 14.638635 0.0005898638
## 2000 meter buffer 9 -125.7810 273.2356 15.016602 0.0004882893
## 2500 meter buffer 9 -125.8267 273.3269 15.107942 0.0004664907
## 1750 meter buffer 9 -126.1628 273.9991 15.780150 0.0003333304
## 1000 meter buffer 9 -126.2404 274.1543 15.935325 0.0003084460
##
## $coyote
## (Intercept) harvest_2000 harvest_pre2000 lc_broadleaf
## 5000 meter buffer -0.8790642 -5.487940 -5.08650049 -0.6168698
## 4750 meter buffer -0.8648903 -5.373024 -4.78964820 -0.6075930
## 4500 meter buffer -0.8266783 -5.163728 -4.71171392 -0.7046345
## 4250 meter buffer -0.8021582 -4.967429 -4.65030374 -0.8358988
## 250 meter buffer -1.4786851 -1.833862 -0.92718095 0.4866877
## 4000 meter buffer -0.8218994 -4.785163 -4.31836108 -0.8410067
## 3750 meter buffer -0.7969870 -4.260655 -3.88368194 -0.9727922
## 3500 meter buffer -0.8241528 -4.044774 -3.61853425 -0.9874046
## 3250 meter buffer -0.7710165 -3.522892 -3.32423362 -1.1125345
## 3000 meter buffer -0.7077937 -2.935783 -2.95875900 -1.3005898
## 2750 meter buffer -0.6290841 -2.660089 -2.49237779 -1.4947145
## 2250 meter buffer -0.5016087 -2.228074 -1.15521911 -1.9369423
## 2500 meter buffer -0.5222681 -2.600031 -2.01097666 -1.7237813
## 1250 meter buffer -0.4808645 -1.299509 -1.77315574 -1.1625187
## 2000 meter buffer -0.4770337 -2.095074 -0.66403219 -1.9037212
## 1500 meter buffer -0.5477439 -1.809453 -1.69954545 -1.1767928
## 1750 meter buffer -0.5506511 -2.209611 -1.33079401 -1.3971082
## 1000 meter buffer -0.5088300 -1.394205 -0.80700040 -1.2481981
## 750 meter buffer -0.4380426 -1.055380 -0.07292074 -1.3984229
## 500 meter buffer -1.1548213 -1.219980 -0.06162276 -0.1975097
## lc_grassland lc_mixed lc_shrub seismic_lines wells
## 5000 meter buffer -0.6834831 1.38638762 0.46582840 19.13493917 20.212048
## 4750 meter buffer -0.7226074 1.37845244 0.56508226 8.61401418 17.517470
## 4500 meter buffer -1.1274983 1.84466433 0.69529179 4.59655363 12.730836
## 4250 meter buffer -1.3146989 2.38676410 0.78522172 6.66951467 7.879403
## 250 meter buffer -0.1342708 -0.41394694 0.72452448 -13.31017608 -43.790703
## 4000 meter buffer -0.8459502 2.59249778 0.83899613 0.02908335 3.886720
## 3750 meter buffer -0.2682300 3.02518021 0.71790004 0.01695982 -6.515643
## 3500 meter buffer 0.0904137 2.80373954 0.65360801 1.80707997 -7.943298
## 3250 meter buffer -0.1900806 2.65426536 0.47088278 5.76144389 -13.949645
## 3000 meter buffer -0.3191547 2.38686312 0.09032889 16.30774028 -20.003976
## 2750 meter buffer -0.6941826 2.02273644 -0.31176889 28.23356408 -23.234497
## 2250 meter buffer -1.6236103 0.29240831 -1.30977758 80.72141282 -30.431442
## 2500 meter buffer -1.9337727 1.11085606 -0.68499659 49.60400306 -23.657617
## 1250 meter buffer -2.1202624 2.27779213 -0.11518959 -75.17954561 -27.566347
## 2000 meter buffer -1.4466674 -0.09410975 -1.44185324 76.45536517 -35.049764
## 1500 meter buffer -1.8752643 1.76520504 -0.17399766 -37.67398665 -26.346594
## 1750 meter buffer -1.8688520 1.06277928 -0.53542813 6.23756997 -26.173227
## 1000 meter buffer -1.4818571 0.88374379 -0.46604929 -57.76938737 -26.557698
## 750 meter buffer -0.7893212 -1.39232853 -1.38766552 -23.08032969 -30.700657
## 500 meter buffer 0.2873841 -1.14384601 -0.14483827 -39.31930225 -21.635928
## df logLik AICc delta weight
## 5000 meter buffer 9 -140.3957 302.4648 0.000000 3.985102e-01
## 4750 meter buffer 9 -141.0062 303.6859 1.221080 2.164139e-01
## 4500 meter buffer 9 -141.5589 304.7912 2.326413 1.245275e-01
## 4250 meter buffer 9 -141.8100 305.2934 2.828654 9.687350e-02
## 250 meter buffer 9 -142.1156 305.9046 3.439803 7.136671e-02
## 4000 meter buffer 9 -142.5260 306.7255 4.260689 4.734156e-02
## 3750 meter buffer 9 -143.1454 307.9643 5.499547 2.548167e-02
## 3500 meter buffer 9 -144.0604 309.7942 7.329462 1.020627e-02
## 3250 meter buffer 9 -145.0700 311.8134 9.348638 3.718849e-03
## 3000 meter buffer 9 -145.9445 313.5624 11.097660 1.551005e-03
## 2750 meter buffer 9 -146.3991 314.4717 12.006887 9.844123e-04
## 2250 meter buffer 9 -146.6496 314.9726 12.507816 7.663050e-04
## 2500 meter buffer 9 -146.7293 315.1321 12.667297 7.075724e-04
## 1250 meter buffer 9 -146.8516 315.3767 12.911954 6.261008e-04
## 2000 meter buffer 9 -146.9013 315.4761 13.011351 5.957451e-04
## 1500 meter buffer 9 -148.0363 317.7460 15.281190 1.915011e-04
## 1750 meter buffer 9 -148.7680 319.2094 16.744663 9.212598e-05
## 1000 meter buffer 9 -149.7695 321.2125 18.747668 3.384037e-05
## 750 meter buffer 9 -150.9219 323.5174 21.052584 1.068880e-05
## 500 meter buffer 9 -153.9147 329.5028 27.038043 5.360470e-07
##
## $elk
## (Intercept) harvest_2000 harvest_pre2000 lc_broadleaf
## 1250 meter buffer -2.681814 -6.690159 -1.6699857 3.5718819
## 1500 meter buffer -3.101126 -9.592601 -2.9183619 4.7455791
## 4000 meter buffer -2.635330 -11.657665 -8.3005243 5.0848358
## 4250 meter buffer -2.690113 -11.733136 -8.5545981 5.3415636
## 4750 meter buffer -2.994387 -11.303001 -8.3896156 5.7198467
## 5000 meter buffer -3.162106 -10.818276 -7.1732459 5.6931888
## 3750 meter buffer -2.634251 -11.265812 -7.4204650 4.5782132
## 4500 meter buffer -2.788975 -11.410341 -8.4648807 5.2949466
## 3500 meter buffer -2.822389 -10.154766 -6.6265786 4.2726631
## 1000 meter buffer -1.679121 -3.343239 0.8341307 0.5149961
## 3250 meter buffer -2.906651 -10.057601 -6.5674045 4.2557482
## 1750 meter buffer -2.876549 -10.185915 -2.6734567 3.6280596
## 750 meter buffer -1.563526 -2.076186 1.1528370 -0.2085301
## 3000 meter buffer -2.902798 -9.449895 -5.6906605 3.9419752
## 2000 meter buffer -2.473212 -9.897122 -2.3294108 2.5844112
## 500 meter buffer -2.266520 -1.548477 0.4742107 0.6191934
## 2750 meter buffer -2.670307 -8.580322 -3.7952685 2.9160786
## 2250 meter buffer -2.325418 -8.269284 -2.2471226 1.9751308
## 2500 meter buffer -2.391372 -8.002479 -2.6948669 2.2735395
## 250 meter buffer -2.513696 -2.220813 -0.1691255 0.3134186
## lc_grassland lc_mixed lc_shrub seismic_lines wells
## 1250 meter buffer -5.7706352 -17.797425 3.7615833 -388.5302 -19.280282
## 1500 meter buffer -5.2258682 -25.703391 5.9094570 -437.5971 15.452301
## 4000 meter buffer -11.1329089 -24.258285 3.3851726 -288.9717 92.851825
## 4250 meter buffer -9.7100812 -25.053986 2.8784649 -292.0079 104.167849
## 4750 meter buffer -3.6267003 -22.510768 0.9867135 -276.9219 107.731440
## 5000 meter buffer 0.8688698 -18.424500 -1.7835655 -262.1779 103.800251
## 3750 meter buffer -10.9120944 -22.417730 3.3719676 -259.3296 78.555302
## 4500 meter buffer -6.8695248 -23.703003 1.9183575 -266.2052 103.097616
## 3500 meter buffer -7.2582799 -21.211793 3.1617701 -225.0083 58.026235
## 1000 meter buffer -4.9898574 -10.862308 -1.5255762 -180.6189 -54.076417
## 3250 meter buffer -6.5238807 -21.361828 4.0047567 -231.1099 51.319283
## 1750 meter buffer -5.8627180 -19.789867 4.9058447 -285.4235 13.859106
## 750 meter buffer -2.0348887 -9.570460 -3.5392895 -132.7332 -58.058604
## 3000 meter buffer -5.3713296 -19.582493 3.7581835 -222.2752 37.661402
## 2000 meter buffer -6.4279742 -15.251557 3.3872545 -220.6538 8.389893
## 500 meter buffer -0.5554444 -10.497405 -1.9390325 -113.8900 -51.028563
## 2750 meter buffer -4.4217654 -13.462399 2.6925587 -190.6732 8.493926
## 2250 meter buffer -5.4713983 -11.592642 2.0542577 -178.0923 -5.294808
## 2500 meter buffer -5.5419505 -10.370334 1.7972448 -194.4078 -1.675048
## 250 meter buffer -0.1625115 -6.184284 -2.1005680 -59.2219 -48.359779
## df logLik AICc delta weight
## 1250 meter buffer 9 -56.36117 134.3958 0.00000000 2.315873e-01
## 1500 meter buffer 9 -56.37898 134.4314 0.03563585 2.274975e-01
## 4000 meter buffer 9 -56.88156 135.4366 1.04078875 1.376291e-01
## 4250 meter buffer 9 -57.14313 135.9597 1.56392675 1.059528e-01
## 4750 meter buffer 9 -57.41864 136.5108 2.11495444 8.043745e-02
## 5000 meter buffer 9 -57.57606 136.8256 2.42979721 6.872125e-02
## 3750 meter buffer 9 -57.72127 137.1160 2.72020867 5.943319e-02
## 4500 meter buffer 9 -57.81386 137.3012 2.90538355 5.417748e-02
## 3500 meter buffer 9 -59.43063 140.5347 6.13892912 1.075631e-02
## 1000 meter buffer 9 -59.59908 140.8716 6.47582055 9.088836e-03
## 3250 meter buffer 9 -59.95189 141.5773 7.18145658 6.386771e-03
## 1750 meter buffer 9 -60.83295 143.3394 8.94355783 2.646342e-03
## 750 meter buffer 9 -60.87349 143.4204 9.02464317 2.541198e-03
## 3000 meter buffer 9 -61.17107 144.0156 9.61980458 1.887126e-03
## 2000 meter buffer 9 -62.50465 146.6828 12.28696766 4.973175e-04
## 500 meter buffer 9 -62.81031 147.2941 12.89827774 3.663443e-04
## 2750 meter buffer 9 -63.46848 148.6104 14.21463633 1.896906e-04
## 2250 meter buffer 9 -64.12005 149.9136 15.51777629 9.887182e-05
## 2500 meter buffer 9 -64.18834 150.0501 15.65433897 9.234605e-05
## 250 meter buffer 9 -66.17391 154.0213 19.62547949 1.267932e-05
##
## $grey_wolf
## (Intercept) harvest_2000 harvest_pre2000 lc_broadleaf
## 5000 meter buffer -4.267763 1.6555134 2.8022407 -2.69019203
## 500 meter buffer -5.762530 -1.6774160 1.7779177 2.43302245
## 3500 meter buffer -4.159795 0.9220134 1.2832261 -1.51689396
## 4250 meter buffer -4.275641 1.8002409 1.7110811 -1.82961288
## 3750 meter buffer -4.205701 1.3575019 1.2155974 -1.53510477
## 4750 meter buffer -4.234019 1.6677947 2.3559456 -2.27027649
## 4000 meter buffer -4.333802 1.6119414 1.3935156 -1.49637795
## 4500 meter buffer -4.211303 1.8060651 2.0504595 -2.02085914
## 750 meter buffer -4.929309 -0.2810575 1.7051863 1.05979292
## 3250 meter buffer -4.116175 0.2615882 0.9954575 -1.15396057
## 1250 meter buffer -3.567545 -1.0884599 0.1389096 -0.22277993
## 1500 meter buffer -3.411943 -1.8496180 0.4488252 -0.35062506
## 250 meter buffer -4.373220 -1.8398068 0.3949764 1.40566435
## 1750 meter buffer -3.341609 -1.9677748 0.8406549 -0.58153304
## 3000 meter buffer -3.836095 -0.1226713 0.5879639 -0.99559914
## 2250 meter buffer -3.109082 -1.1701281 1.7203356 -1.31536983
## 2000 meter buffer -3.280202 -1.7481448 1.9125078 -1.07461065
## 1000 meter buffer -3.714102 -0.7841404 0.6761526 -0.08258719
## 2750 meter buffer -3.493111 -0.3896048 0.4940127 -0.96022726
## 2500 meter buffer -3.244753 -0.9031487 0.6803183 -0.97381858
## lc_grassland lc_mixed lc_shrub seismic_lines wells
## 5000 meter buffer 14.12367738 21.315689 -3.2829858 279.67821 -51.2629282
## 500 meter buffer 1.41101104 3.797738 4.9646889 51.87586 27.1031304
## 3500 meter buffer 7.00382555 16.555700 -1.6080870 224.45338 -23.6117412
## 4250 meter buffer 10.07454957 18.323180 -2.4407659 235.03331 -34.8847852
## 3750 meter buffer 7.86173736 17.034863 -1.7720076 220.35778 -27.8883051
## 4750 meter buffer 11.37290598 19.792536 -2.8585587 250.76739 -40.7385090
## 4000 meter buffer 9.52974950 17.730029 -2.0114955 217.36814 -28.6578351
## 4500 meter buffer 10.30915615 18.914575 -2.5737160 234.94126 -38.9732939
## 750 meter buffer -1.01184944 3.496699 2.1542023 75.89291 41.5291172
## 3250 meter buffer 4.67600110 15.451310 -0.9567911 194.06970 -8.7446097
## 1250 meter buffer -3.19473208 7.109202 1.7565921 15.43382 21.7576902
## 1500 meter buffer -3.37322645 8.121376 1.3764186 25.32328 19.3277033
## 250 meter buffer 1.78354289 2.430543 2.7754999 34.70254 -8.0095751
## 1750 meter buffer -3.48731179 9.368741 0.8818826 53.60763 13.4591661
## 3000 meter buffer 2.54667215 14.234646 -0.4899263 150.30708 -5.4386417
## 2250 meter buffer -3.37433411 10.280217 -1.0714633 124.87656 -0.6351178
## 2000 meter buffer -2.76483197 9.780781 -0.4411610 115.97247 4.5511334
## 1000 meter buffer -1.82066702 4.877123 1.7963308 34.89441 15.8663831
## 2750 meter buffer 0.02791245 12.677881 -0.4045565 115.60673 -3.4105729
## 2500 meter buffer -3.15029162 10.956116 -0.4878997 100.20504 5.2179790
## df logLik AICc delta weight
## 5000 meter buffer 9 -74.99450 171.6625 0.0000000 0.250776715
## 500 meter buffer 9 -75.22719 172.1279 0.4653877 0.198714494
## 3500 meter buffer 9 -76.26121 174.1959 2.5334113 0.070658422
## 4250 meter buffer 9 -76.28321 174.2399 2.5774232 0.069120502
## 3750 meter buffer 9 -76.31711 174.3077 2.6452187 0.066816738
## 4750 meter buffer 9 -76.33905 174.3516 2.6890960 0.065366832
## 4000 meter buffer 9 -76.36532 174.4041 2.7416339 0.063672070
## 4500 meter buffer 9 -76.60844 174.8904 3.2278878 0.049929853
## 750 meter buffer 9 -76.77219 175.2178 3.5553694 0.042388550
## 3250 meter buffer 9 -77.23095 176.1354 4.4729091 0.026792136
## 1250 meter buffer 9 -77.25268 176.1788 4.5163517 0.026216451
## 1500 meter buffer 9 -77.59307 176.8596 5.1971300 0.018652832
## 250 meter buffer 9 -78.18788 178.0492 6.3867495 0.010290161
## 1750 meter buffer 9 -78.29433 178.2621 6.5996661 0.009250984
## 3000 meter buffer 9 -78.41607 178.5056 6.8431372 0.008190659
## 2250 meter buffer 9 -78.57896 178.8314 7.1689096 0.006959504
## 2000 meter buffer 9 -78.60447 178.8824 7.2199322 0.006784203
## 1000 meter buffer 9 -79.04131 179.7561 8.0936113 0.004383105
## 2750 meter buffer 9 -79.55611 180.7857 9.1232107 0.002619432
## 2500 meter buffer 9 -79.63680 180.9471 9.2846029 0.002416358
##
## $lynx
## (Intercept) harvest_2000 harvest_pre2000 lc_broadleaf
## 500 meter buffer -4.638798 2.188900 1.7925432 0.1910742
## 750 meter buffer -3.363738 3.316632 2.1511847 -1.2662431
## 1500 meter buffer -2.014705 2.156057 3.1970223 -2.1224406
## 1750 meter buffer -1.911235 2.025076 3.1905282 -2.1740819
## 5000 meter buffer -3.445486 3.854474 7.8096569 -4.2867685
## 1250 meter buffer -2.122074 2.606918 2.8187974 -2.3130125
## 1000 meter buffer -2.463963 2.839992 2.5963825 -2.1205547
## 4750 meter buffer -3.228794 3.427634 7.1840843 -3.9564187
## 4500 meter buffer -3.048877 3.425353 6.7310356 -3.7006338
## 2000 meter buffer -1.833974 2.058312 3.8285921 -2.4075812
## 4250 meter buffer -2.975361 3.092680 6.4661854 -3.6042517
## 2250 meter buffer -1.806369 2.115197 3.8118564 -2.6025584
## 4000 meter buffer -2.836414 2.585671 5.8358009 -3.2606681
## 3500 meter buffer -2.637542 2.436327 5.3612957 -3.4600274
## 3750 meter buffer -2.716822 2.662083 5.4168895 -3.3310330
## 3250 meter buffer -2.544037 1.796901 5.2079978 -3.0540838
## 2500 meter buffer -1.816007 1.973550 3.8062152 -2.5542238
## 3000 meter buffer -2.308146 1.762154 4.8355802 -2.7613587
## 2750 meter buffer -2.100276 1.837350 4.2652158 -2.5736326
## 250 meter buffer -3.035887 -0.649130 0.6592757 -0.6453718
## lc_grassland lc_mixed lc_shrub seismic_lines wells
## 500 meter buffer -0.33833666 2.0603815 1.9860741 7.7418410 42.0726557
## 750 meter buffer -4.26216070 1.6666314 -0.6897007 14.8009193 27.6118854
## 1500 meter buffer -12.15271363 3.3152505 -2.7817060 -49.6910985 17.2418942
## 1750 meter buffer -14.27717468 3.8342442 -2.9886307 -60.9107141 20.6903781
## 5000 meter buffer 13.15514501 19.8739446 -4.0878674 66.8915095 -39.5827092
## 1250 meter buffer -8.90053358 3.6388111 -2.4424652 -32.4122637 9.2795419
## 1000 meter buffer -5.79899889 2.3594124 -1.5528189 -3.6435035 3.6468649
## 4750 meter buffer 9.74701145 18.0291414 -3.8070291 35.4188872 -28.9470505
## 4500 meter buffer 7.14759949 16.4744346 -3.6445517 16.9267394 -26.9069998
## 2000 meter buffer -13.04828431 4.6973390 -3.6934003 -46.7609149 15.0537007
## 4250 meter buffer 5.33549754 15.2952417 -3.6818718 30.5937604 -21.4433876
## 2250 meter buffer -12.44895274 6.1457926 -3.8834363 -50.6324236 15.4924741
## 4000 meter buffer 2.51352340 13.7933172 -3.5209046 7.9171481 -7.6926952
## 3500 meter buffer 0.88760036 12.8526403 -3.3906093 39.3497087 -13.7010964
## 3750 meter buffer 1.62635917 12.9499435 -3.3546784 23.1638784 -13.3296181
## 3250 meter buffer -0.91301148 11.6532278 -3.5528727 0.9716624 3.3452942
## 2500 meter buffer -9.77267053 6.6594612 -3.7541280 -73.2581881 12.7841480
## 3000 meter buffer -2.53286185 9.5965548 -3.5541090 -36.5317170 4.6944040
## 2750 meter buffer -5.20369551 7.9021737 -3.5698783 -57.8557842 8.7067708
## 250 meter buffer 0.07101097 0.4347604 1.7039200 -9.2477270 0.8116645
## df logLik AICc delta weight
## 500 meter buffer 9 -78.62374 178.9210 0.000000 9.648048e-01
## 750 meter buffer 9 -82.61504 186.9035 7.982586 1.782555e-02
## 1500 meter buffer 9 -84.33310 190.3397 11.418715 3.198136e-03
## 1750 meter buffer 9 -84.35443 190.3823 11.461361 3.130665e-03
## 5000 meter buffer 9 -84.53782 190.7491 11.828157 2.606080e-03
## 1250 meter buffer 9 -84.54318 190.7598 11.838877 2.592149e-03
## 1000 meter buffer 9 -84.91909 191.5117 12.590695 1.779938e-03
## 4750 meter buffer 9 -85.42391 192.5213 13.600339 1.074393e-03
## 4500 meter buffer 9 -85.92674 193.5269 14.605984 6.498160e-04
## 2000 meter buffer 9 -86.08610 193.8457 14.924717 5.540874e-04
## 4250 meter buffer 9 -86.23031 194.1341 15.213131 4.796782e-04
## 2250 meter buffer 9 -86.66011 194.9937 16.072735 3.120968e-04
## 4000 meter buffer 9 -86.84315 195.3598 16.438820 2.598933e-04
## 3500 meter buffer 9 -87.04317 195.7598 16.838853 2.127792e-04
## 3750 meter buffer 9 -87.24150 196.1565 17.235517 1.744996e-04
## 3250 meter buffer 9 -87.46720 196.6079 17.686913 1.392436e-04
## 2500 meter buffer 9 -87.89951 197.4725 18.551529 9.037039e-05
## 3000 meter buffer 9 -88.27422 198.2219 19.300956 6.212840e-05
## 2750 meter buffer 9 -88.58266 198.8388 19.917829 4.563919e-05
## 250 meter buffer 9 -90.31836 202.3102 23.389229 8.045127e-06
##
## $moose
## (Intercept) harvest_2000 harvest_pre2000 lc_broadleaf
## 500 meter buffer -2.2301609 -0.7875774 0.7698777 2.00379740
## 750 meter buffer -1.9179235 -0.5592863 1.0960012 1.66542760
## 250 meter buffer -2.3241198 -0.5110314 -0.6715524 1.75141880
## 1000 meter buffer -1.3660374 0.4848453 1.1504745 0.93213457
## 3750 meter buffer -0.2287966 1.5613611 1.4406725 -0.75649073
## 1750 meter buffer -0.9155644 1.1536271 1.5944787 0.11715174
## 3500 meter buffer -0.3227275 1.5447327 1.4097746 -0.69325634
## 4000 meter buffer -0.3119877 1.4429672 1.4382023 -0.46744021
## 2000 meter buffer -0.9152462 1.3164230 1.6713940 0.12256165
## 1500 meter buffer -1.0427061 1.0166686 1.2935874 0.33197950
## 4500 meter buffer -0.3440631 1.4886848 1.4718373 -0.17752514
## 4250 meter buffer -0.3836815 1.5297145 1.5769807 -0.36047832
## 1250 meter buffer -1.1941955 0.7979169 1.0875110 0.62792960
## 4750 meter buffer -0.2889701 1.3419989 1.2374821 0.01430409
## 5000 meter buffer -0.3095362 1.3434390 1.2945983 0.08528960
## 2250 meter buffer -0.8266371 1.4241393 1.4774349 0.03461669
## 3250 meter buffer -0.4630858 1.5006025 1.4487979 -0.47463117
## 2500 meter buffer -0.6883477 1.4784096 1.2476576 -0.03811787
## 2750 meter buffer -0.6214425 1.5134475 1.1718354 -0.11339635
## 3000 meter buffer -0.5319969 1.5143633 1.2352276 -0.24036218
## lc_grassland lc_mixed lc_shrub seismic_lines wells
## 500 meter buffer 3.9226120 2.69373315 3.4263290 -64.64828 -28.05807
## 750 meter buffer 3.6695298 2.58759907 2.6793639 -56.16744 -32.58800
## 250 meter buffer 2.4114288 2.26748550 2.9020550 -23.20201 -15.46067
## 1000 meter buffer 2.5884135 1.32238164 0.5622808 -15.38316 -39.73788
## 3750 meter buffer -4.7011072 4.05169405 -3.7503459 40.44538 -47.43275
## 1750 meter buffer 1.6812222 -1.12360632 -1.9765218 68.80572 -47.59561
## 3500 meter buffer -3.9045537 3.87394318 -3.4746360 44.37860 -46.68728
## 4000 meter buffer -4.1201866 3.86176789 -3.7304451 20.53772 -41.54811
## 2000 meter buffer 1.4268416 -0.77678587 -2.2796937 69.37404 -46.25686
## 1500 meter buffer 2.1368082 -1.13657723 -1.4439454 58.29034 -43.54578
## 4500 meter buffer -3.5495752 3.57075801 -3.7595552 -8.39386 -39.27685
## 4250 meter buffer -2.9072933 3.78139814 -3.8593298 15.71576 -42.01169
## 1250 meter buffer 2.3410305 0.08681804 -0.4868094 21.73740 -40.91531
## 4750 meter buffer -4.5813973 2.76000516 -3.7956725 -25.97033 -32.24342
## 5000 meter buffer -4.2265366 2.58627206 -3.9576331 -28.77138 -30.45687
## 2250 meter buffer 0.5750740 0.11148007 -2.4552013 58.63542 -44.49240
## 3250 meter buffer -2.7204273 3.13540402 -3.1621727 41.86992 -44.77615
## 2500 meter buffer -0.8134624 1.00735284 -2.6230306 37.93657 -41.90972
## 2750 meter buffer -1.2435174 1.41803809 -2.7482263 33.43772 -41.63385
## 3000 meter buffer -2.2179314 1.83847871 -2.8541132 31.59953 -41.98404
## df logLik AICc delta weight
## 500 meter buffer 9 -158.7347 339.1429 0.000000 9.883570e-01
## 750 meter buffer 9 -163.6239 348.9213 9.778343 7.440012e-03
## 250 meter buffer 9 -164.2312 350.1360 10.993049 4.053252e-03
## 1000 meter buffer 9 -168.0911 357.8557 18.712815 8.540391e-05
## 3750 meter buffer 9 -169.6350 360.9434 21.800493 1.823883e-05
## 1750 meter buffer 9 -170.4613 362.5961 23.453187 7.982133e-06
## 3500 meter buffer 9 -170.6361 362.9456 23.802712 6.702249e-06
## 4000 meter buffer 9 -170.8873 363.4481 24.305193 5.213247e-06
## 2000 meter buffer 9 -170.9417 363.5569 24.413988 4.937233e-06
## 1500 meter buffer 9 -171.0275 363.7284 24.585514 4.531451e-06
## 4500 meter buffer 9 -171.3676 364.4087 25.265766 3.224946e-06
## 4250 meter buffer 9 -171.4531 364.5796 25.436658 2.960831e-06
## 1250 meter buffer 9 -171.6322 364.9378 25.794853 2.475327e-06
## 4750 meter buffer 9 -171.6445 364.9624 25.819472 2.445044e-06
## 5000 meter buffer 9 -171.7176 365.1086 25.965705 2.272651e-06
## 2250 meter buffer 9 -172.2814 366.2363 27.093378 1.293188e-06
## 3250 meter buffer 9 -172.4848 366.6430 27.500083 1.055229e-06
## 2500 meter buffer 9 -173.3166 368.3066 29.163696 4.593014e-07
## 2750 meter buffer 9 -173.6910 369.0555 29.912590 3.158475e-07
## 3000 meter buffer 9 -173.8592 369.3918 30.248922 2.669586e-07
##
## $snowshoe_hare
## (Intercept) harvest_2000 harvest_pre2000 lc_broadleaf
## 4000 meter buffer -0.8635970 -7.0383983 7.087796 -4.733352
## 3500 meter buffer -0.8333932 -6.0722844 5.908161 -4.454474
## 3750 meter buffer -0.8822427 -6.6679669 6.475600 -4.460603
## 4250 meter buffer -0.8092547 -6.6721939 7.233734 -4.929891
## 3250 meter buffer -0.8496310 -5.6672635 5.513688 -4.256570
## 4500 meter buffer -0.7617888 -5.9427552 6.970662 -4.856169
## 4750 meter buffer -0.7759291 -5.7173012 7.011581 -4.808025
## 2000 meter buffer -0.7105139 -6.2466944 6.137331 -3.946574
## 250 meter buffer -1.3164060 -0.5092921 1.006582 -1.245722
## 5000 meter buffer -0.8925434 -5.0474197 7.458819 -5.077472
## 3000 meter buffer -0.8843952 -4.8928575 5.290588 -3.959757
## 2250 meter buffer -0.6833235 -5.9829256 6.228984 -3.996968
## 1750 meter buffer -0.6108544 -5.3528186 5.453430 -3.888911
## 2500 meter buffer -0.7252853 -5.3213424 5.812407 -3.922944
## 2750 meter buffer -0.8397297 -4.8059990 5.400768 -3.776883
## 1500 meter buffer -0.5492953 -4.3791511 4.736385 -3.735853
## 1250 meter buffer -0.4735189 -3.4726757 4.128543 -3.522310
## 1000 meter buffer -0.5906434 -2.8563772 3.490384 -3.048234
## 500 meter buffer -1.4746455 -1.9725971 1.696574 -1.224776
## 750 meter buffer -1.0135047 -1.9582852 1.881091 -2.044391
## lc_grassland lc_mixed lc_shrub seismic_lines
## 4000 meter buffer 2.02051756 9.20437113 -3.434223413 90.475010
## 3500 meter buffer 2.39228077 10.29217178 -3.083065745 44.854106
## 3750 meter buffer 2.49462686 8.87942589 -3.109586726 67.615331
## 4250 meter buffer 1.70632777 10.02437232 -3.592812489 96.396861
## 3250 meter buffer 1.97439273 10.18732646 -3.014340098 26.524675
## 4500 meter buffer 1.13322980 10.58070379 -3.745895642 71.440962
## 4750 meter buffer 1.02186669 11.01639168 -3.938605921 63.074744
## 2000 meter buffer -2.78247604 0.06920634 -2.465937623 133.601692
## 250 meter buffer -4.13441378 -1.29557314 -0.005035104 -7.872473
## 5000 meter buffer 2.72840467 12.26517125 -4.201314560 97.252420
## 3000 meter buffer 1.46046552 8.48959435 -2.780990055 30.631418
## 2250 meter buffer -3.04798507 1.64445318 -2.709271464 118.464512
## 1750 meter buffer -3.01438096 -1.10214536 -2.601045294 133.675570
## 2500 meter buffer -1.92479648 3.29518790 -2.671741163 91.282696
## 2750 meter buffer -0.05034923 5.83898049 -2.599260731 47.917897
## 1500 meter buffer -3.15095804 -0.85356512 -2.463322087 114.406212
## 1250 meter buffer -3.09010615 -0.78464199 -2.197572964 70.643291
## 1000 meter buffer -2.42065208 -1.01832227 -1.538858761 35.333186
## 500 meter buffer -2.41430452 -0.44469555 1.159795198 -26.169242
## 750 meter buffer -2.66022306 -0.07981444 -0.205713578 -29.244289
## wells df logLik AICc delta weight
## 4000 meter buffer 21.6282311 9 -123.6466 268.9666 0.0000000 2.766139e-01
## 3500 meter buffer 15.3326894 9 -123.8853 269.4440 0.4773261 2.178833e-01
## 3750 meter buffer 19.5051908 9 -124.2061 270.0857 1.1190995 1.580755e-01
## 4250 meter buffer 16.4464590 9 -124.3371 270.3477 1.3811018 1.386665e-01
## 3250 meter buffer 17.1324643 9 -124.5278 270.7290 1.7623740 1.145986e-01
## 4500 meter buffer 16.5752711 9 -125.8147 273.3030 4.3363062 3.164150e-02
## 4750 meter buffer 19.8078487 9 -126.5962 274.8659 5.8992933 1.448301e-02
## 2000 meter buffer 5.3199660 9 -126.7540 275.1814 6.2147653 1.236958e-02
## 250 meter buffer -0.7544795 9 -126.8176 275.3087 6.3420873 1.160666e-02
## 5000 meter buffer 7.6154507 9 -127.1412 275.9559 6.9892796 8.397910e-03
## 3000 meter buffer 9.8736898 9 -127.4494 276.5722 7.6055869 6.170805e-03
## 2250 meter buffer 8.4406742 9 -127.6556 276.9847 8.0180938 5.020732e-03
## 1750 meter buffer -2.7496297 9 -128.4566 278.5867 9.6200036 2.253807e-03
## 2500 meter buffer 6.4445539 9 -129.3853 280.4440 11.4773952 8.904085e-04
## 2750 meter buffer 7.3371218 9 -129.6434 280.9602 11.9935538 6.878708e-04
## 1500 meter buffer -9.5311600 9 -130.1423 281.9581 12.9914777 4.176480e-04
## 1250 meter buffer -13.9295104 9 -131.0609 283.7953 14.8286874 1.666731e-04
## 1000 meter buffer -15.2974449 9 -132.4248 286.5231 17.5565016 4.261163e-05
## 500 meter buffer -5.3032805 9 -133.6967 289.0670 20.1003043 1.194396e-05
## 750 meter buffer -1.4744239 9 -136.1483 293.9701 25.0034528 1.029066e-06
##
## $`white-tailed_deer`
## (Intercept) harvest_2000 harvest_pre2000 lc_broadleaf
## 4250 meter buffer -1.1822056 1.14343043 -1.8834843 2.802128
## 4500 meter buffer -1.2038471 1.21415878 -1.9982928 2.932885
## 4000 meter buffer -1.1289590 1.04233940 -1.9146238 2.685332
## 5000 meter buffer -1.2598819 1.62499973 -2.1683633 3.022530
## 4750 meter buffer -1.2263757 1.33988705 -2.0945529 3.004885
## 3750 meter buffer -1.0202517 0.98989688 -1.9877274 2.531560
## 3500 meter buffer -0.9879060 0.87157660 -2.0010532 2.466731
## 3250 meter buffer -0.9625354 0.85494359 -1.8809632 2.480554
## 3000 meter buffer -0.8609327 0.72568260 -1.9435536 2.455735
## 2750 meter buffer -0.7531394 0.46589217 -2.1471248 2.424378
## 2500 meter buffer -0.6365687 0.19400560 -2.0400752 2.293254
## 2250 meter buffer -0.5603410 0.02568109 -1.6805481 2.193318
## 250 meter buffer -0.8283441 -0.32007758 -0.8484051 2.669069
## 2000 meter buffer -0.5690241 -0.07473877 -1.4270125 2.272065
## 1750 meter buffer -0.5672793 -0.16619208 -1.5205997 2.386394
## 1000 meter buffer -0.6073692 1.01263407 -1.7999201 2.605424
## 1500 meter buffer -0.5179250 -0.01768650 -1.6083860 2.433740
## 1250 meter buffer -0.6387061 0.47234607 -1.9229082 2.601845
## 500 meter buffer -1.0782608 0.60665680 -0.9689404 3.011916
## 750 meter buffer -0.7888550 0.60091446 -1.3461206 2.699542
## lc_grassland lc_mixed lc_shrub seismic_lines
## 4250 meter buffer 11.607434 14.220662 -1.115235082 -80.55536
## 4500 meter buffer 12.255756 13.973197 -1.086811061 -92.80220
## 4000 meter buffer 10.595938 14.348802 -1.115987071 -70.87871
## 5000 meter buffer 13.912499 13.559719 -1.314789347 -93.22439
## 4750 meter buffer 12.839041 13.585375 -1.202844022 -94.10298
## 3750 meter buffer 9.137674 14.471510 -1.116846791 -64.57006
## 3500 meter buffer 8.404464 14.547320 -1.037855043 -58.28079
## 3250 meter buffer 7.467349 14.137400 -1.001448459 -55.50837
## 3000 meter buffer 5.801788 13.382764 -0.881081349 -57.94611
## 2750 meter buffer 4.293622 13.155888 -0.655709373 -63.21303
## 2500 meter buffer 2.877479 12.992145 -0.568562928 -61.88847
## 2250 meter buffer 2.176251 12.734835 -0.553861307 -62.69667
## 250 meter buffer 1.535771 3.906366 0.838543727 -45.31721
## 2000 meter buffer 2.231763 12.280033 -0.410576556 -72.65662
## 1750 meter buffer 1.931654 11.351970 0.009169897 -87.29078
## 1000 meter buffer 1.500682 7.050765 1.110916576 -121.40003
## 1500 meter buffer 1.820417 9.171592 0.303250874 -98.86607
## 1250 meter buffer 1.460169 8.229826 0.862744213 -110.77848
## 500 meter buffer 1.371856 3.599306 0.996997687 -52.83966
## 750 meter buffer 1.546146 5.146763 1.310522934 -88.05679
## wells df logLik AICc delta weight
## 4250 meter buffer -1.18409781 9 -180.7871 383.2477 0.0000000 2.604575e-01
## 4500 meter buffer -0.04458674 9 -180.9312 383.5359 0.2881926 2.255052e-01
## 4000 meter buffer -1.82040186 9 -181.1819 384.0373 0.7896184 1.754985e-01
## 5000 meter buffer -3.82891881 9 -181.2818 384.2371 0.9894219 1.588132e-01
## 4750 meter buffer 0.25235450 9 -181.4040 384.4815 1.2338516 1.405430e-01
## 3750 meter buffer -3.00710711 9 -182.8823 387.4380 4.1903378 3.204915e-02
## 3500 meter buffer -3.11237315 9 -184.6046 390.8827 7.6350076 5.725534e-03
## 3250 meter buffer -3.68285995 9 -186.2825 394.2386 10.9908669 1.069302e-03
## 3000 meter buffer -1.99354774 9 -188.0639 397.8012 14.5534884 1.800889e-04
## 2750 meter buffer -0.02466137 9 -188.4675 398.6084 15.3607220 1.202814e-04
## 2500 meter buffer 0.54562503 9 -189.7066 401.0867 17.8390218 3.483714e-05
## 2250 meter buffer -0.65948101 9 -192.2718 406.2171 22.9693942 2.679145e-06
## 250 meter buffer -8.56110993 9 -194.3452 410.3639 27.1161694 3.369267e-07
## 2000 meter buffer -1.00919284 9 -194.3647 410.4028 27.1551050 3.304309e-07
## 1750 meter buffer 0.23507559 9 -196.5420 414.7575 31.5097558 3.745246e-08
## 1000 meter buffer -11.07039650 9 -198.7540 419.1815 35.9337720 4.100317e-09
## 1500 meter buffer -1.72211704 9 -200.6176 422.9087 39.6610075 6.360020e-10
## 1250 meter buffer -1.39095318 9 -201.5449 424.7633 41.5156356 2.516118e-10
## 500 meter buffer 5.02340281 9 -202.0697 425.8129 42.5651836 1.488760e-10
## 750 meter buffer -6.34253628 9 -205.4496 432.5726 49.3248939 5.069583e-12
Depending on which variables I include in the buffer seleciton model the 250m or one of the 4250-4750m buffers comes out on top - similar to OSM scale results. Interesting that it is so sensitive to changes in single variables
Let’s reprint the correlation plot for this specific buffer so we have to reference when constructing models. I’ve commented out the code to save the plot but can uncomment to use
# open file to save plot
# png("figures/corr_plot_250.png",
# width = 1000,
# height = 800)
prop_det_data$`250 meter buffer` %>%
# select only columns with covariates not other info to simplify the plot a bit
select(harvest:lc_shrub) %>%
# use chart.correlation to produce plots for each buffer size
chart.Correlation(.,
histogram = TRUE,
method = "pearson")
# # close file
# dev.off()
Now that we have best fit buffer size (250m) we can run several candidate models based on a priori hypotheses for what covariates might influence monthly presence/absence of black bears in our study area.
# Null model
bbear_null <- glm(cbind(black_bear, absent_black_bear) ~ 1,
data = prop_det_data$`250 meter buffer`,
family = 'binomial')
# # global model - removed because too many vaiables for sample size
# bbear_global <- glm(cbind(black_bear, absent_black_bear) ~
# scale(harvest_2000) +
# scale(harvest_pre2000) +
# roads +
# # scale(pipeline) + can't include with roads
# scale(seismic_lines) +
# scale(wells) +
# scale(lc_agriculture) +
# scale(lc_broadleaf) +
# scale(lc_grassland) +
# scale(lc_mixed) +
# scale(lc_shrub),
# data = prop_det_data$`250 meter buffer`,
# family = 'binomial')
# Natural heterogeneity
bbear_nat <- glm(cbind(black_bear, absent_black_bear) ~
scale(lc_broadleaf) +
scale(lc_grassland) +
scale(lc_mixed) +
scale(lc_shrub),
data = prop_det_data$`250 meter buffer`,
family = 'binomial')
# forest harvest (TBD how this will look with yearly harvest data)
bbear_harvest <- glm(cbind(black_bear, absent_black_bear) ~
scale(harvest_2000) +
scale(harvest_pre2000),
data = prop_det_data$`250 meter buffer`,
family = 'binomial')
# agriculture - put on it's own because it doesn't fit with some of other variables but I am interested in it's influence
bbear_ag <- glm(cbind(black_bear, absent_black_bear) ~
scale(lc_agriculture),
data = prop_det_data$`250 meter buffer`,
family = 'binomial')
# transportation (roads) * at 250m buffer can't combine with other industrial features (correlated with pipeline & wells)
bbear_rds <- glm(cbind(black_bear, absent_black_bear) ~
scale(roads),
data = prop_det_data$`250 meter buffer`,
family = 'binomial')
# linear energy development
bbear_linear_energy <- glm(cbind(black_bear, absent_black_bear) ~
scale(pipeline) +
scale(seismic_lines),
data = prop_det_data$`250 meter buffer`,
family = 'binomial')
# polygonal energy development
bbear_poly_energy <- glm(cbind(black_bear, absent_black_bear) ~
scale(wells),
data = prop_det_data$`250 meter buffer`,
family = 'binomial')
# energy development
bbear_energy <- glm(cbind(black_bear, absent_black_bear) ~
scale(pipeline) +
scale(seismic_lines) +
scale(wells),
data = prop_det_data$`250 meter buffer`,
family = 'binomial')
# polygonal disturbance (harvest + polygonal energy development + agriculture)
bbear_poly <- glm(cbind(black_bear, absent_black_bear) ~
scale(harvest_2000) +
scale(harvest_pre2000) +
scale(wells),
data = prop_det_data$`250 meter buffer`,
family = 'binomial')
# linear disturbance (transportation + linear energy development)
bbear_linear <- glm(cbind(black_bear, absent_black_bear) ~
scale(roads) +
# pipeline + can't include correlated w/ roads 0.62
scale(seismic_lines),
data = prop_det_data$`250 meter buffer`,
family = 'binomial')
# overall human disturbance from energy and harvest
bbear_disturb <- glm(cbind(black_bear, absent_black_bear) ~
scale(harvest_2000) +
scale(harvest_pre2000) +
scale(roads) +
# pipeline + can't include correlated w/ roads 0.62
scale(seismic_lines) +
scale(wells),
data = prop_det_data$`250 meter buffer`,
family = 'binomial')
# linear + natural
bbear_linear_nat <- glm(cbind(black_bear, absent_black_bear) ~
scale(roads) +
scale(seismic_lines) +
scale(lc_broadleaf) +
scale(lc_shrub),
data = prop_det_data$`250 meter buffer`,
family = 'binomial')
# polygonal + natural
bbear_poly_nat <- glm(cbind(black_bear, absent_black_bear) ~
scale(harvest_2000) +
scale(harvest_pre2000) +
scale(wells) +
scale(lc_broadleaf) +
scale(lc_shrub),
data = prop_det_data$`250 meter buffer`,
family = 'binomial')
# compare black bear models
model.sel(bbear_null,
bbear_nat,
bbear_harvest,
bbear_ag,
bbear_rds,
bbear_linear_energy,
bbear_poly_energy,
bbear_energy,
bbear_poly,
bbear_linear,
bbear_disturb,
bbear_linear_nat,
bbear_poly_nat)
## Model selection table
## (Int) scl(lc_brd) scl(lc_grs) scl(lc_mxd) scl(lc_shr)
## bbear_linear -1.792
## bbear_energy -1.771
## bbear_linear_energy -1.767
## bbear_disturb -1.798
## bbear_linear_nat -1.791 -0.02568 -0.04492
## bbear_poly_energy -1.668
## bbear_nat -1.685 0.19290 0.3349 -0.04131 0.23840
## bbear_rds -1.673
## bbear_null -1.647
## bbear_poly -1.668
## bbear_ag -1.647
## bbear_harvest -1.649
## bbear_poly_nat -1.676 0.02292 0.13040
## scl(hrv_2000) scl(hrv_p20) scl(lc_agr) scl(rds) scl(ppl)
## bbear_linear -0.2317
## bbear_energy -0.04520
## bbear_linear_energy -0.09015
## bbear_disturb 0.05118 -0.119000 -0.1842
## bbear_linear_nat -0.2489
## bbear_poly_energy
## bbear_nat
## bbear_rds -0.2261
## bbear_null
## bbear_poly 0.07682 -0.044020
## bbear_ag 0.0319
## bbear_harvest 0.10080 0.000408
## bbear_poly_nat 0.01609 -0.111600
## scl(ssm_lns) scl(wll) df logLik AICc delta weight
## bbear_linear -0.5193 3 -124.146 254.7 0.00 0.540
## bbear_energy -0.4650 -0.2065 4 -124.275 257.3 2.56 0.150
## bbear_linear_energy -0.5114 3 -125.708 257.9 3.12 0.113
## bbear_disturb -0.5222 -0.1865 6 -122.227 258.1 3.34 0.102
## bbear_linear_nat -0.5225 5 -124.072 259.3 4.55 0.056
## bbear_poly_energy -0.2715 2 -128.686 261.6 6.86 0.018
## bbear_nat 5 -126.031 263.2 8.47 0.008
## bbear_rds 2 -129.719 263.7 8.92 0.006
## bbear_null 1 -131.465 265.0 10.27 0.003
## bbear_poly -0.2731 4 -128.218 265.2 10.45 0.003
## bbear_ag 2 -131.414 267.0 12.31 0.001
## bbear_harvest 3 -130.932 268.3 13.57 0.001
## bbear_poly_nat -0.2943 6 -127.818 269.3 14.52 0.000
## Models ranked by AICc(x)
The model with linear features (roads and seismic lines) was best fit, similar to unofficial OSM results I got in the scale analsyis for black bears
# linear
summary(bbear_linear)
##
## Call:
## glm(formula = cbind(black_bear, absent_black_bear) ~ scale(roads) +
## scale(seismic_lines), family = "binomial", data = prop_det_data$`250 meter buffer`)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.5282 -1.5550 -0.5348 0.8151 3.1418
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.7919 0.1175 -15.251 < 2e-16 ***
## scale(roads) -0.2317 0.1270 -1.825 0.06807 .
## scale(seismic_lines) -0.5193 0.1803 -2.880 0.00398 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 162.60 on 58 degrees of freedom
## Residual deviance: 147.96 on 56 degrees of freedom
## (1 observation deleted due to missingness)
## AIC: 254.29
##
## Number of Fisher Scoring iterations: 5
We will start with VIF
vif(bbear_linear)
## scale(roads) scale(seismic_lines)
## 1.000006 1.000006
plot(bbear_linear,
which = 1,
main = 'Model fit black bear linear model')
# calculate vif
vif(bbear_linear) %>%
# Converts the named vector returned by vif() into a tidy tibble
enframe(name = 'Predictor',
value = 'VIF') %>%
# plot with ggplot
ggplot(aes(x = reorder(Predictor, VIF), # reorders from smallest VIF to largest (not sure I want like this)
y = VIF)) +
# plot as bars
geom_bar(stat = 'identity', fill = 'skyblue') +
# add labels
labs(x = 'Predictor',
y = 'VIF') +
# set theme
theme_classic()
Let’s extract the odds ratios for the top model so we can plot them for data vis later.
bbear_model_odds <-
# extract the coefficients and upper and lower CI
tidy(bbear_linear, conf.int = TRUE) %>%
# convert the coefficients into odds ratios
mutate(estimate = exp(estimate),
conf.low = exp(conf.low),
conf.high = exp(conf.high)) %>%
# rename columns
rename('lower' = conf.low,
'upper' = conf.high) %>%
# Remove intercept for plotting
filter(term != '(Intercept)')
First let’s get a silhouette for this graphy from phylopic
black_bear_img <- get_phylopic(get_uuid(name = 'Ursus americanus'))
Now let’s use ggplot to plot the odds ratios for each feature in the top model
# name to save plot later
bbear_odds_plot <-
# provide data and mapping aesthetics
ggplot(bbear_model_odds, aes(x = term,
y = estimate)) +
geom_point() +
geom_errorbar(aes(ymin = lower,
ymax = upper),
width = 0.2,
linewidth = 0.5,
position = position_dodge(width = 0.9)) +
geom_hline(yintercept = 1, linetype = "dashed") +
labs(y = 'Odds ratio') +
scale_x_discrete(labels = c('Roads',
'Seismic Lines')) +
scale_y_continuous(expand = expansion(mult = c(0, 0.05)),
limits = c(0, 2)) +
coord_flip() +
add_phylopic(black_bear_img,
x = 2.4,
y = 1.9,
ysize = 0.25) +
theme_classic() +
theme(axis.title.y = element_blank(),
axis.title = element_text(size = 16),
axis.text = element_text(size = 14))
bbear_odds_plot
Save plot
ggsave('figures/odds_plot_blackbear.jpg',
bbear_odds_plot,
width = 14,
height = 10,
units = 'in',
dpi = 600)
First we need to extract predicted probabilities of species occurrence for each covariate of interest in the best fit model, and generate a tibble of that data that we can plot to interpret how each variable influences species occurrence
The handy ggpredict function will do this for us, I’m combining it with purrr to iterate the function over all fixed effects so I don’t have to copy and paste code for every variable in the model
# supply vector of fixed effects as they appear in model
bbear_fes <- c('roads',
'seismic_lines')
# Use purrr to iterate ggpredict and rename the list elements
bbear_predicted_data <- map(set_names(bbear_fes), ~ {
ggpredict(bbear_linear, terms = paste0(.x, "[all]"))
})
# I viewed the full data from my environemnt but here's a printout of one variable
head(bbear_predicted_data$roads)
## # Predicted probabilities of cbind(black_bear, absent_black_bear)
##
## roads | Predicted | 95% CI
## ---------------------------------
## 0.00 | 0.17 | 0.14, 0.20
## 1.00e-03 | 0.17 | 0.14, 0.20
## 2.00e-03 | 0.16 | 0.14, 0.20
## 4.00e-03 | 0.16 | 0.13, 0.19
## 5.00e-03 | 0.16 | 0.13, 0.19
## 7.00e-03 | 0.15 | 0.13, 0.18
##
## Adjusted for:
## * seismic_lines = 0.00
And then we plot with ggplot, starting with seismic lines
# and now plot with ggplot
# name plot and assign to environment
bbear_seismic_plot <-
# provide data from ggpredict with x and y
ggplot(bbear_predicted_data$seismic_lines,
aes(x = x,
y = predicted)) +
# plot relationship with line
geom_line() +
# plot confidence with geom ribbon, must supply new aesthetics
geom_ribbon(aes(ymin = conf.low,
ymax = conf.high),
alpha = 0.4) +
# set the axis limits so all plots go from 0-1
scale_y_continuous(limits = c(0, 1)) +
# label axis
labs(x = 'Proportion of seismic lines',
y = 'Predicted probabiity of occurrence') +
# specify overall theme
theme_classic() +
# change font size
theme(axis.title = element_text(size = 16),
axis.text = element_text(size = 14)) +
# add silhouette
add_phylopic(uuid = get_uuid(name = 'Ursus americanus'),
x = 0.028,
y = 0.9,
ysize = 0.2)
bbear_seismic_plot
Save plot
ggsave('figures/black_bear_seismic_lines_plot.jpg',
bbear_seismic_plot,
width = 14,
height = 10,
units = 'in',
dpi = 600)
And now repeat for roads, I didn’t bother creating a function or iteration for this because given the labs need to have nice names and the sillhouettes may need to be placed in different spots given the x axis for each variable this was simmpler for now
# name plot and assign to environment
bbear_rds_plot <-
# provide data from ggpredict with x and y
ggplot(bbear_predicted_data$roads,
aes(x = x,
y = predicted)) +
# plot relationship with line
geom_line() +
# plot confidence with geom ribbon, must supply new aesthetics
geom_ribbon(aes(ymin = conf.low,
ymax = conf.high),
alpha = 0.4) +
# set the axis limits so all plots go from 0-1
scale_y_continuous(limits = c(0, 1)) +
# label axis
labs(x = 'Proportion of roads',
y = 'Predicted probabiity of occurrence') +
# specify overall theme
theme_classic() +
# change font size
theme(axis.title = element_text(size = 16),
axis.text = element_text(size = 14)) +
# add silhouette
add_phylopic(uuid = get_uuid(name = 'Ursus americanus'),
x = 0.055,
y = 0.9,
ysize = 0.2)
bbear_rds_plot
Save plot
ggsave('figures/black_bear_roads_plot.jpg',
bbear_rds_plot,
width = 14,
height = 10,
units = 'in',
dpi = 600)
Let’s repeat this process for each species that we have enough data for.
The top buffer for coyote was 5000m, other similarly performing buffers were around same size 4750, 4500
# # open file to save plot
# png("figures/corr_plot_5000.png",
# width = 1000,
# height = 800)
prop_det_data$`5000 meter buffer` %>%
# select only columns with covariates not other info to simplify the plot a bit
select(harvest:lc_shrub) %>%
# use chart.correlation to produce plots for each buffer size
chart.Correlation(.,
histogram = TRUE,
method = "pearson")
# # close file
# dev.off()
# Null model
coyote_null <- glm(cbind(coyote, absent_coyote) ~ 1,
data = prop_det_data$`5000 meter buffer`,
family = 'binomial')
# Natural heterogeneity
coyote_nat <- glm(cbind(coyote, absent_coyote) ~
scale(lc_broadleaf) +
scale(lc_grassland) +
scale(lc_mixed) +
scale(lc_shrub),
data = prop_det_data$`5000 meter buffer`,
family = 'binomial')
# forest harvest
coyote_harvest <- glm(cbind(coyote, absent_coyote) ~
scale(harvest_2000) +
scale(harvest_pre2000),
data = prop_det_data$`5000 meter buffer`,
family = 'binomial')
# agriculture
coyote_ag <- glm(cbind(coyote, absent_coyote) ~
scale(lc_agriculture),
data = prop_det_data$`5000 meter buffer`,
family = 'binomial')
# transportation (roads) * at 5000m buffer can't combine with other industrial features (correlated with pipeline 0.82 & wells 0.82)
coyote_rds <- glm(cbind(coyote, absent_coyote) ~
scale(roads),
data = prop_det_data$`5000 meter buffer`,
family = 'binomial')
# linear energy development
coyote_linear_energy <- glm(cbind(coyote, absent_coyote) ~
scale(pipeline) +
scale(seismic_lines),
data = prop_det_data$`5000 meter buffer`,
family = 'binomial')
# polygonal energy development
coyote_poly_energy <- glm(cbind(coyote, absent_coyote) ~
scale(wells),
data = prop_det_data$`5000 meter buffer`,
family = 'binomial')
# energy development - can't do at 5000 pipeline and wells correlated and other two variables are already in a model on their own
# coyote_energy <- glm(cbind(coyote, absent_coyote) ~
# scale(pipeline) +
# scale(seismic_lines) +
# scale(wells),
# data = prop_det_data$`5000 meter buffer`,
# family = 'binomial')
# polygonal disturbance (harvest + polygonal energy development)
coyote_poly <- glm(cbind(coyote, absent_coyote) ~
scale(harvest_2000) +
scale(harvest_pre2000) +
scale(wells),
data = prop_det_data$`5000 meter buffer`,
family = 'binomial')
# linear disturbance (transportation + linear energy development)
coyote_linear <- glm(cbind(coyote, absent_coyote) ~
scale(roads) +
# pipeline + can't include correlated w/ roads
scale(seismic_lines),
data = prop_det_data$`5000 meter buffer`,
family = 'binomial')
# overall human disturbance (can't include pipeline or wells which are correlated with roads)
coyote_disturb <- glm(cbind(coyote, absent_coyote) ~
scale(harvest_2000) +
scale(harvest_pre2000) +
scale(roads) +
scale(seismic_lines),
data = prop_det_data$`5000 meter buffer`,
family = 'binomial')
# linear + habitat
coyote_linear_nat <- glm(cbind(coyote, absent_coyote) ~
scale(roads) +
scale(seismic_lines) +
scale(lc_broadleaf) +
scale(lc_grassland),
data = prop_det_data$`5000 meter buffer`,
family = 'binomial')
# polygonal + habitat
coyote_poly_nat <- glm(cbind(coyote, absent_coyote) ~
scale(harvest_2000) +
scale(harvest_pre2000) +
scale(wells) +
scale(lc_broadleaf) +
scale(lc_grassland),
data = prop_det_data$`5000 meter buffer`,
family = 'binomial')
Conifer model performed better - will use conifer instead of broadleaf for now
# compare coyote models
model.sel(coyote_null,
coyote_nat,
coyote_harvest,
coyote_ag,
coyote_rds,
coyote_linear_energy,
coyote_poly_energy,
coyote_poly,
coyote_linear,
coyote_disturb,
coyote_linear_nat,
coyote_poly_nat)
## Model selection table
## (Int) scl(lc_brd) scl(lc_grs) scl(lc_mxd) scl(lc_shr)
## coyote_disturb -2.053
## coyote_ag -1.919
## coyote_poly -1.984
## coyote_harvest -1.954
## coyote_poly_nat -1.977 -0.10280 -0.02923
## coyote_nat -1.926 -0.06812 0.15490 0.01279 -0.582
## coyote_poly_energy -1.831
## coyote_null -1.825
## coyote_rds -1.839
## coyote_linear_energy -1.826
## coyote_linear_nat -1.867 0.26790 0.21630
## coyote_linear -1.841
## scl(hrv_2000) scl(hrv_p20) scl(lc_agr) scl(rds) scl(ppl)
## coyote_disturb -0.5657 -0.4061 0.4584
## coyote_ag 0.5285
## coyote_poly -0.5073 -0.4199
## coyote_harvest -0.3749 -0.3868
## coyote_poly_nat -0.5106 -0.4223
## coyote_nat
## coyote_poly_energy
## coyote_null
## coyote_rds 0.1109
## coyote_linear_energy -0.165
## coyote_linear_nat 0.1276
## coyote_linear 0.1040
## scl(ssm_lns) scl(wll) df logLik AICc delta weight
## coyote_disturb 0.02096 5 -134.611 280.4 0.00 0.957
## coyote_ag 2 -141.478 287.2 6.82 0.032
## coyote_poly 0.2148 4 -140.927 290.6 10.24 0.006
## coyote_harvest 3 -142.309 291.1 10.70 0.005
## coyote_poly_nat 0.1872 6 -140.607 294.8 14.48 0.001
## coyote_nat 5 -153.055 317.2 36.89 0.000
## coyote_poly_energy -0.2463 2 -159.055 322.3 41.97 0.000
## coyote_null 1 -162.221 326.5 46.16 0.000
## coyote_rds 2 -161.565 327.3 46.99 0.000
## coyote_linear_energy -0.06554 3 -160.536 327.5 47.15 0.000
## coyote_linear_nat -0.11490 5 -158.589 328.3 47.96 0.000
## coyote_linear -0.05422 3 -161.421 329.3 48.92 0.000
## Models ranked by AICc(x)
summary(coyote_disturb)
##
## Call:
## glm(formula = cbind(coyote, absent_coyote) ~ scale(harvest_2000) +
## scale(harvest_pre2000) + scale(roads) + scale(seismic_lines),
## family = "binomial", data = prop_det_data$`5000 meter buffer`)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -3.0191 -1.4732 -0.7045 0.7089 5.2231
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -2.05325 0.11548 -17.781 < 2e-16 ***
## scale(harvest_2000) -0.56572 0.13603 -4.159 3.2e-05 ***
## scale(harvest_pre2000) -0.40614 0.14141 -2.872 0.004078 **
## scale(roads) 0.45843 0.12048 3.805 0.000142 ***
## scale(seismic_lines) 0.02096 0.10330 0.203 0.839211
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 228.68 on 58 degrees of freedom
## Residual deviance: 173.46 on 54 degrees of freedom
## (1 observation deleted due to missingness)
## AIC: 279.22
##
## Number of Fisher Scoring iterations: 5
VIF
# report VIF
vif(coyote_disturb)
## scale(harvest_2000) scale(harvest_pre2000) scale(roads)
## 1.742479 1.411446 1.319502
## scale(seismic_lines)
## 1.046699
# plot VIF
plot(coyote_disturb,
which = 1,
main = 'Model fit coyote disturbance model')
# additional plot of each variable
# calculate vif
vif(coyote_disturb) %>%
# Converts the named vector returned by vif() into a tidy tibble
enframe(name = 'Predictor',
value = 'VIF') %>%
# plot with ggplot
ggplot(aes(x = reorder(Predictor, VIF), # reorders from smallest VIF to largest (not sure I want like this)
y = VIF)) +
# plot as bars
geom_bar(stat = 'identity', fill = 'skyblue') +
# add labels
labs(x = 'Predictor',
y = 'VIF') +
# set theme
theme_classic()
coyote_model_odds <-
# extract the coefficients and upper and lower CI
tidy(coyote_disturb, conf.int = TRUE) %>%
# convert the coefficients into odds ratios
mutate(estimate = exp(estimate),
conf.low = exp(conf.low),
conf.high = exp(conf.high)) %>%
# rename columns
rename('lower' = conf.low,
'upper' = conf.high) %>%
# Remove intercept for plotting
filter(term != '(Intercept)')
Get coyote silhouette
# this time I copied the specific phylopic uuid I want from the website in the image url
coyote_img <- get_phylopic('d451e353-585a-4543-84e7-7ef2f90aa407')
Plot odds
# name plot
coyote_odds_plot <-
# provide data and mapping aesthetics
ggplot(coyote_model_odds, aes(x = term,
y = estimate)) +
geom_point() +
geom_errorbar(aes(ymin = lower,
ymax = upper),
width = 0.2,
linewidth = 0.5,
position = position_dodge(width = 0.9)) +
geom_hline(yintercept = 1, linetype = "dashed") +
labs(y = 'Odds ratio') +
scale_x_discrete(labels = c('Harvest post 2000s',
'Harvest pre 2000s',
'Roads',
'Seismic Lines')) +
scale_y_continuous(expand = expansion(mult = c(0, 0.05)),
limits = c(0, NA)) +
coord_flip() +
add_phylopic(coyote_img,
x = 4.2,
y = 1.9,
ysize = 0.6) +
theme_classic() +
theme(axis.title.y = element_blank(),
axis.title = element_text(size = 16),
axis.text = element_text(size = 14))
coyote_odds_plot
Save plot
ggsave('figures/odds_plot_coyote.jpg',
coyote_odds_plot,
width = 14,
height = 10,
units = 'in',
dpi = 600)
First extract predicted data for each covariate in model using purrr below
# supply vector of fixed effects as they appear in model
coyote_fes <- c('roads',
'seismic_lines',
'harvest_2000',
'harvest_pre2000')
# Use purrr to iterate ggpredict and rename the list elements
coyote_predicted_data <- map(set_names(coyote_fes), ~ {
ggpredict(coyote_disturb, terms = paste0(.x, "[all]"))
})
# I viewed the full data from my environemnt but here's a printout of one variable
head(coyote_predicted_data$roads)
## # Predicted probabilities of cbind(coyote, absent_coyote)
##
## roads | Predicted | 95% CI
## ---------------------------------
## 0.00 | 0.05 | 0.03, 0.09
## 1.00e-03 | 0.06 | 0.04, 0.09
## 2.00e-03 | 0.07 | 0.04, 0.10
## 3.00e-03 | 0.07 | 0.05, 0.10
## 4.00e-03 | 0.08 | 0.06, 0.11
## 5.00e-03 | 0.09 | 0.07, 0.12
##
## Adjusted for:
## * harvest_2000 = 0.15
## * harvest_pre2000 = 0.09
## * seismic_lines = 0.00
Now plot each one individually
# name plot and assign to environment
coyote_rds_plot <-
# provide data from ggpredict with x and y
ggplot(coyote_predicted_data$roads,
aes(x = x,
y = predicted)) +
# plot relationship with line
geom_line() +
# plot confidence with geom ribbon, must supply new aesthetics
geom_ribbon(aes(ymin = conf.low,
ymax = conf.high),
alpha = 0.4) +
# set the axis limits so all plots go from 0-1
scale_y_continuous(limits = c(0, 1)) +
# label axis
labs(x = 'Proportion of roads',
y = 'Predicted probabiity of occurrence') +
# specify overall theme
theme_classic() +
# change font size
theme(axis.title = element_text(size = 16),
axis.text = element_text(size = 14)) +
# add silhouette
add_phylopic(uuid = 'd451e353-585a-4543-84e7-7ef2f90aa407',
x = 0.015,
y = 0.9,
ysize = 0.2)
coyote_rds_plot
Save plot
ggsave('figures/coyote_roads_plot.jpg',
coyote_rds_plot,
width = 14,
height = 10,
units = 'in',
dpi = 600)
# name plot and assign to environment
coyote_seismic_plot <-
# provide data from ggpredict with x and y
ggplot(coyote_predicted_data$seismic_lines,
aes(x = x,
y = predicted)) +
# plot relationship with line
geom_line() +
# plot confidence with geom ribbon, must supply new aesthetics
geom_ribbon(aes(ymin = conf.low,
ymax = conf.high),
alpha = 0.4) +
# set the axis limits so all plots go from 0-1
scale_y_continuous(limits = c(0, 1)) +
# label axis
labs(x = 'Proportion of seismic lines',
y = 'Predicted probabiity of occurrence') +
# specify overall theme
theme_classic() +
# change font size
theme(axis.title = element_text(size = 16),
axis.text = element_text(size = 14)) +
# add silhouette
add_phylopic(uuid = 'd451e353-585a-4543-84e7-7ef2f90aa407',
x = 0.008,
y = 0.9,
ysize = 0.2)
coyote_seismic_plot
Save plot
ggsave('figures/coyote_seismic_lines_plot.jpg',
coyote_seismic_plot,
width = 14,
height = 10,
units = 'in',
dpi = 600)
# name plot and assign to environment
coyote_harvest_pre_plot <-
# provide data from ggpredict with x and y
ggplot(coyote_predicted_data$harvest_pre2000,
aes(x = x,
y = predicted)) +
# plot relationship with line
geom_line() +
# plot confidence with geom ribbon, must supply new aesthetics
geom_ribbon(aes(ymin = conf.low,
ymax = conf.high),
alpha = 0.4) +
# set the axis limits so all plots go from 0-1
scale_y_continuous(limits = c(0, 1)) +
# label axis
labs(x = 'Proportion of timber harvest (pre 2000s)',
y = 'Predicted probabiity of occurrence') +
# specify overall theme
theme_classic() +
# change font size
theme(axis.title = element_text(size = 16),
axis.text = element_text(size = 14)) +
# add silhouette
add_phylopic(uuid = 'd451e353-585a-4543-84e7-7ef2f90aa407',
x = 0.3,
y = 0.9,
ysize = 0.2)
coyote_harvest_pre_plot
Save plot
ggsave('figures/coyote_harvest_pre2000_plot.jpg',
coyote_harvest_pre_plot,
width = 14,
height = 10,
units = 'in',
dpi = 600)
# name plot and assign to environment
coyote_harvest_post_plot <-
# provide data from ggpredict with x and y
ggplot(coyote_predicted_data$harvest_2000,
aes(x = x,
y = predicted)) +
# plot relationship with line
geom_line() +
# plot confidence with geom ribbon, must supply new aesthetics
geom_ribbon(aes(ymin = conf.low,
ymax = conf.high),
alpha = 0.4) +
# set the axis limits so all plots go from 0-1
scale_y_continuous(limits = c(0, 1)) +
# label axis
labs(x = 'Proportion of timber harvest (post 2000s)',
y = 'Predicted probabiity of occurrence') +
# specify overall theme
theme_classic() +
# change font size
theme(axis.title = element_text(size = 16),
axis.text = element_text(size = 14)) +
# add silhouette
add_phylopic(uuid = 'd451e353-585a-4543-84e7-7ef2f90aa407',
x = 0.38,
y = 0.9,
ysize = 0.2)
coyote_harvest_post_plot
Save plot
ggsave('figures/coyote_harvest_post2000_plot.jpg',
coyote_harvest_post_plot,
width = 14,
height = 10,
units = 'in',
dpi = 600)
The 5000m buffer was also the best fit for grey wolf
prop_det_data$`5000 meter buffer` %>%
# select only columns with covariates not other info to simplify the plot a bit
select(harvest:lc_shrub) %>%
# use chart.correlation to produce plots for each buffer size
chart.Correlation(.,
histogram = TRUE,
method = "pearson")
# Null model
grey_wolf_null <- glm(cbind(grey_wolf, absent_grey_wolf) ~ 1,
data = prop_det_data$`5000 meter buffer`,
family = 'binomial')
# Natural heterogeneity
grey_wolf_nat <- glm(cbind(grey_wolf, absent_grey_wolf) ~
scale(lc_broadleaf) +
scale(lc_grassland) +
scale(lc_mixed) +
scale(lc_shrub),
data = prop_det_data$`5000 meter buffer`,
family = 'binomial')
# forest harvest (TBD how this will look with yearly harvest data)
grey_wolf_harvest <- glm(cbind(grey_wolf, absent_grey_wolf) ~
scale(harvest_2000) +
scale(harvest_pre2000),
data = prop_det_data$`5000 meter buffer`,
family = 'binomial')
# agriculture
grey_wolf_ag <- glm(cbind(grey_wolf, absent_grey_wolf) ~
scale(lc_agriculture),
data = prop_det_data$`5000 meter buffer`,
family = 'binomial')
# transportation (roads) * at 5000m buffer can't combine with other industrial features (correlated with pipeline & wells)
grey_wolf_rds <- glm(cbind(grey_wolf, absent_grey_wolf) ~
scale(roads),
data = prop_det_data$`5000 meter buffer`,
family = 'binomial')
# linear energy development
grey_wolf_linear_energy <- glm(cbind(grey_wolf, absent_grey_wolf) ~
scale(pipeline) +
scale(seismic_lines),
data = prop_det_data$`5000 meter buffer`,
family = 'binomial')
# polygonal energy development
grey_wolf_poly_energy <- glm(cbind(grey_wolf, absent_grey_wolf) ~
scale(wells),
data = prop_det_data$`5000 meter buffer`,
family = 'binomial')
# polygonal disturbance (harvest + polygonal energy development)
grey_wolf_poly <- glm(cbind(grey_wolf, absent_grey_wolf) ~
scale(harvest_2000) +
scale(harvest_pre2000) +
scale(wells),
data = prop_det_data$`5000 meter buffer`,
family = 'binomial')
# linear disturbance (transportation + linear energy development)
grey_wolf_linear <- glm(cbind(grey_wolf, absent_grey_wolf) ~
scale(roads) +
# pipeline + can't include correlated w/ roads 0.82
scale(seismic_lines),
data = prop_det_data$`5000 meter buffer`,
family = 'binomial')
# overall human disturbance
grey_wolf_disturb <- glm(cbind(grey_wolf, absent_grey_wolf) ~
scale(harvest_2000) +
scale(harvest_pre2000) +
scale(roads) +
# pipeline + can't include correlated w/ roads 0.82
scale(seismic_lines),
# wells can't include correlated w/ roads 0.82
data = prop_det_data$`5000 meter buffer`,
family = 'binomial')
# linear + natural (have to pix max of 5 variables) based on the detections per habitat type I chose shrub because there were no detections there so likely avoid
grey_wolf_linear_nat <- glm(cbind(grey_wolf, absent_grey_wolf) ~
scale(roads) +
scale(seismic_lines) +
scale(lc_mixed) +
scale(lc_shrub),
data = prop_det_data$`5000 meter buffer`,
family = 'binomial')
# polygonal and natural
grey_wolf_poly_nat <- glm(cbind(grey_wolf, absent_grey_wolf) ~
scale(harvest_2000) +
scale(harvest_pre2000) +
scale(wells) +
scale(lc_mixed) +
scale(lc_shrub),
data = prop_det_data$`5000 meter buffer`,
family = 'binomial')
model.sel(grey_wolf_null,
grey_wolf_nat,
grey_wolf_harvest,
grey_wolf_ag,
grey_wolf_rds,
grey_wolf_linear_energy,
grey_wolf_poly_energy,
grey_wolf_poly,
grey_wolf_linear,
grey_wolf_disturb,
grey_wolf_linear_nat,
grey_wolf_poly_nat)
## Model selection table
## (Int) scl(lc_brd) scl(lc_grs) scl(lc_mxd) scl(lc_shr)
## grey_wolf_linear_nat -3.099 0.5112 0.004006
## grey_wolf_nat -3.081 -0.1118 0.1436 0.6176 -0.068240
## grey_wolf_poly_nat -3.067 0.5435 -0.015630
## grey_wolf_linear -2.963
## grey_wolf_null -2.916
## grey_wolf_linear_energy -2.955
## grey_wolf_rds -2.923
## grey_wolf_poly_energy -2.922
## grey_wolf_ag -2.917
## grey_wolf_harvest -2.922
## grey_wolf_disturb -2.967
## grey_wolf_poly -2.929
## scl(hrv_2000) scl(hrv_p20) scl(lc_agr) scl(rds)
## grey_wolf_linear_nat 0.14130
## grey_wolf_nat
## grey_wolf_poly_nat 0.08115 -0.06951
## grey_wolf_linear 0.12330
## grey_wolf_null
## grey_wolf_linear_energy
## grey_wolf_rds 0.06416
## grey_wolf_poly_energy
## grey_wolf_ag -0.0497
## grey_wolf_harvest 0.11420 -0.18080
## grey_wolf_disturb 0.05663 -0.15660 0.12720
## grey_wolf_poly 0.07452 -0.19860
## scl(ppl) scl(ssm_lns) scl(wll) df logLik AICc delta
## grey_wolf_linear_nat 0.2647 5 -78.579 168.3 0.00
## grey_wolf_nat 5 -78.914 169.0 0.67
## grey_wolf_poly_nat 0.03287 6 -79.515 172.6 4.35
## grey_wolf_linear 0.3224 3 -84.990 176.4 8.13
## grey_wolf_null 1 -87.377 176.8 8.53
## grey_wolf_linear_energy 0.06974 0.2980 3 -85.211 176.9 8.57
## grey_wolf_rds 2 -87.287 178.8 10.50
## grey_wolf_poly_energy 0.05922 2 -87.296 178.8 10.52
## grey_wolf_ag 2 -87.329 178.9 10.58
## grey_wolf_harvest 3 -86.690 179.8 11.53
## grey_wolf_disturb 0.3038 5 -84.596 180.3 12.03
## grey_wolf_poly 0.08209 4 -86.583 181.9 13.62
## weight
## grey_wolf_linear_nat 0.527
## grey_wolf_nat 0.377
## grey_wolf_poly_nat 0.060
## grey_wolf_linear 0.009
## grey_wolf_null 0.007
## grey_wolf_linear_energy 0.007
## grey_wolf_rds 0.003
## grey_wolf_poly_energy 0.003
## grey_wolf_ag 0.003
## grey_wolf_harvest 0.002
## grey_wolf_disturb 0.001
## grey_wolf_poly 0.001
## Models ranked by AICc(x)
Whether linear natural or just natural comes up as the ‘top model’ is very dependent on which landcover variables you include for linear natural. I’d say the driving force is mostly from mixed forest
summary(grey_wolf_nat)
##
## Call:
## glm(formula = cbind(grey_wolf, absent_grey_wolf) ~ scale(lc_broadleaf) +
## scale(lc_grassland) + scale(lc_mixed) + scale(lc_shrub),
## family = "binomial", data = prop_det_data$`5000 meter buffer`)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.2051 -1.1761 -0.9067 0.6553 3.3335
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -3.08098 0.17213 -17.899 < 2e-16 ***
## scale(lc_broadleaf) -0.11183 0.26997 -0.414 0.679
## scale(lc_grassland) 0.14358 0.20781 0.691 0.490
## scale(lc_mixed) 0.61764 0.15805 3.908 9.32e-05 ***
## scale(lc_shrub) -0.06824 0.26964 -0.253 0.800
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 124.78 on 58 degrees of freedom
## Residual deviance: 107.85 on 54 degrees of freedom
## (1 observation deleted due to missingness)
## AIC: 167.83
##
## Number of Fisher Scoring iterations: 5
summary(grey_wolf_linear_nat)
##
## Call:
## glm(formula = cbind(grey_wolf, absent_grey_wolf) ~ scale(roads) +
## scale(seismic_lines) + scale(lc_mixed) + scale(lc_shrub),
## family = "binomial", data = prop_det_data$`5000 meter buffer`)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.9827 -1.2154 -0.9244 0.6800 3.5870
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -3.098974 0.176665 -17.542 < 2e-16 ***
## scale(roads) 0.141322 0.179285 0.788 0.430550
## scale(seismic_lines) 0.264687 0.176907 1.496 0.134603
## scale(lc_mixed) 0.511205 0.146789 3.483 0.000497 ***
## scale(lc_shrub) 0.004006 0.240727 0.017 0.986722
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 124.78 on 58 degrees of freedom
## Residual deviance: 107.18 on 54 degrees of freedom
## (1 observation deleted due to missingness)
## AIC: 167.16
##
## Number of Fisher Scoring iterations: 5
VIF
# report VIF
vif(grey_wolf_linear_nat)
## scale(roads) scale(seismic_lines) scale(lc_mixed)
## 1.217899 1.207234 1.106791
## scale(lc_shrub)
## 1.132095
# plot VIF
plot(grey_wolf_linear_nat,
which = 1,
main = 'Vif wolf model')
# additional plot of each variable
# calculate vif
vif(grey_wolf_nat) %>%
# Converts the named vector returned by vif() into a tidy tibble
enframe(name = 'Predictor',
value = 'VIF') %>%
# plot with ggplot
ggplot(aes(x = reorder(Predictor, VIF), # reorders from smallest VIF to largest (not sure I want like this)
y = VIF)) +
# plot as bars
geom_bar(stat = 'identity', fill = 'skyblue') +
# add labels
labs(x = 'Predictor',
y = 'VIF') +
# set theme
theme_classic()
# additional plot of each variable from the just nat model
# calculate vif
vif(grey_wolf_nat) %>%
# Converts the named vector returned by vif() into a tidy tibble
enframe(name = 'Predictor',
value = 'VIF') %>%
# plot with ggplot
ggplot(aes(x = reorder(Predictor, VIF), # reorders from smallest VIF to largest (not sure I want like this)
y = VIF)) +
# plot as bars
geom_bar(stat = 'identity', fill = 'skyblue') +
# add labels
labs(x = 'Predictor',
y = 'VIF') +
# set theme
theme_classic()
grey_wolf_model_odds <-
# extract the coefficients and upper and lower CI
tidy(grey_wolf_linear_nat, conf.int = TRUE) %>%
# convert the coefficients into odds ratios
mutate(estimate = exp(estimate),
conf.low = exp(conf.low),
conf.high = exp(conf.high)) %>%
# rename columns
rename('lower' = conf.low,
'upper' = conf.high) %>%
# Remove intercept for plotting
filter(term != '(Intercept)')
Get wolf silhouette
wolf_img <- get_phylopic('e4e306cd-73b6-4ca3-a08c-753a856f7f12')
Plot odss
# name to save plot later
grey_wolf_odds_plot <-
# provide data and mapping aesthetics
ggplot(grey_wolf_model_odds, aes(x = term,
y = estimate)) +
geom_point() +
geom_errorbar(aes(ymin = lower,
ymax = upper),
width = 0.2,
linewidth = 0.5,
position = position_dodge(width = 0.9)) +
geom_hline(yintercept = 1, linetype = "dashed") +
labs(y = 'Odds ratio') +
scale_x_discrete(labels = c('Mixed Forest',
'Shrubs',
'Roads',
'Seismic lines')) +
scale_y_continuous(expand = expansion(mult = c(0, 0.05)),
limits = c(0, NA)) +
coord_flip() +
add_phylopic(wolf_img,
x = 4.2,
y = 2.1,
ysize = 0.75) +
theme_classic() +
theme(axis.title.y = element_blank(),
axis.title = element_text(size = 16),
axis.text = element_text(size = 14))
grey_wolf_odds_plot
Save plot
ggsave('figures/odds_plot_greywolf.jpg',
grey_wolf_odds_plot,
width = 14,
height = 10,
units = 'in',
dpi = 600)
Use code from above to get pred data for each variable
# supply vector of fixed effects as they appear in model
wolf_fes <- c('roads',
'seismic_lines',
'lc_shrub',
'lc_mixed')
# Use purrr to iterate ggpredict and rename the list elements
wolf_predicted_data <- map(set_names(wolf_fes), ~ {
ggpredict(grey_wolf_linear_nat, terms = paste0(.x, "[all]"))
})
# I viewed the full data from my environment but here's a printout of one variable
head(wolf_predicted_data$roads)
## # Predicted probabilities of cbind(grey_wolf, absent_grey_wolf)
##
## roads | Predicted | 95% CI
## ---------------------------------
## 0.00 | 0.03 | 0.02, 0.07
## 1.00e-03 | 0.03 | 0.02, 0.07
## 2.00e-03 | 0.04 | 0.02, 0.07
## 3.00e-03 | 0.04 | 0.02, 0.06
## 4.00e-03 | 0.04 | 0.02, 0.06
## 5.00e-03 | 0.04 | 0.03, 0.06
##
## Adjusted for:
## * seismic_lines = 0.00
## * lc_mixed = 0.04
## * lc_shrub = 0.16
Now plot results for each fixed effect starting with seismic lines
# name plot and assign to environment
wolf_seismic_plot <-
# provide data from ggpredict with x and y
ggplot(wolf_predicted_data$seismic_lines,
aes(x = x,
y = predicted)) +
# plot relationship with line
geom_line() +
# plot confidence with geom ribbon, must supply new aesthetics
geom_ribbon(aes(ymin = conf.low,
ymax = conf.high),
alpha = 0.4) +
# set the axis limits so all plots go from 0-1
scale_y_continuous(limits = c(0, 1)) +
# label axis
labs(x = 'Proportion of seismic lines',
y = 'Predicted probabiity of occurrence') +
# specify overall theme
theme_classic() +
# change font size
theme(axis.title = element_text(size = 16),
axis.text = element_text(size = 14)) +
# add silhouette
add_phylopic(uuid = 'e4e306cd-73b6-4ca3-a08c-753a856f7f12',
x = 0.0085,
y = 0.9,
ysize = 0.2)
wolf_seismic_plot
Save plot
ggsave('figures/grey_wolf_seismic_lines_plot.jpg',
wolf_seismic_plot,
width = 14,
height = 10,
units = 'in',
dpi = 600)
# name plot and assign to environment
wolf_rds_plot <-
# provide data from ggpredict with x and y
ggplot(wolf_predicted_data$roads,
aes(x = x,
y = predicted)) +
# plot relationship with line
geom_line() +
# plot confidence with geom ribbon, must supply new aesthetics
geom_ribbon(aes(ymin = conf.low,
ymax = conf.high),
alpha = 0.4) +
# set the axis limits so all plots go from 0-1
scale_y_continuous(limits = c(0, 1)) +
# label axis
labs(x = 'Proportion of roads',
y = 'Predicted probabiity of occurrence') +
# specify overall theme
theme_classic() +
# change font size
theme(axis.title = element_text(size = 16),
axis.text = element_text(size = 14)) +
# add silhouette
add_phylopic(uuid = 'e4e306cd-73b6-4ca3-a08c-753a856f7f12',
x = 0.015,
y = 0.9,
ysize = 0.2)
wolf_rds_plot
Save plot
ggsave('figures/grey_wolf_roads_plot.jpg',
wolf_rds_plot,
width = 14,
height = 10,
units = 'in',
dpi = 600)
# name plot and assign to environment
wolf_shrub_plot <-
# provide data from ggpredict with x and y
ggplot(wolf_predicted_data$lc_shrub,
aes(x = x,
y = predicted)) +
# plot relationship with line
geom_line() +
# plot confidence with geom ribbon, must supply new aesthetics
geom_ribbon(aes(ymin = conf.low,
ymax = conf.high),
alpha = 0.4) +
# set the axis limits so all plots go from 0-1
scale_y_continuous(limits = c(0, 1)) +
# label axis
labs(x = 'Proportion of shrub',
y = 'Predicted probabiity of occurrence') +
# specify overall theme
theme_classic() +
# change font size
theme(axis.title = element_text(size = 16),
axis.text = element_text(size = 14)) +
# add silhouette
add_phylopic(uuid = 'e4e306cd-73b6-4ca3-a08c-753a856f7f12',
x = 0.7,
y = 0.9,
ysize = 0.2)
wolf_shrub_plot
Save plot
ggsave('figures/grey_wolf_shrub_plot.jpg',
wolf_shrub_plot,
width = 14,
height = 10,
units = 'in',
dpi = 600)
# name plot and assign to environment
wolf_mixed_plot <-
# provide data from ggpredict with x and y
ggplot(wolf_predicted_data$lc_mixed,
aes(x = x,
y = predicted)) +
# plot relationship with line
geom_line() +
# plot confidence with geom ribbon, must supply new aesthetics
geom_ribbon(aes(ymin = conf.low,
ymax = conf.high),
alpha = 0.4) +
# set the axis limits so all plots go from 0-1
scale_y_continuous(limits = c(0, 1)) +
# label axis
labs(x = 'Proportion of mixed forest',
y = 'Predicted probabiity of occurrence') +
# specify overall theme
theme_classic() +
# change font size
theme(axis.title = element_text(size = 16),
axis.text = element_text(size = 14)) +
# add silhouette
add_phylopic(uuid = 'e4e306cd-73b6-4ca3-a08c-753a856f7f12',
x = 0.12,
y = 0.9,
ysize = 0.2)
wolf_mixed_plot
Save plot
ggsave('figures/grey_wolf_mixed_plot.jpg',
wolf_mixed_plot,
width = 14,
height = 10,
units = 'in',
dpi = 600)
The best lynx buffer size was the 500m buffer
Let’s print the correlation plot for the 500m buffer again here for reference when developing the lynx specific models
# # open file to save plot
# png("figures/corr_plot_500.png",
# width = 1000,
# height = 800)
prop_det_data$`500 meter buffer` %>%
# select only columns with covariates not other info to simplify the plot a bit
select(harvest:lc_shrub) %>%
# use chart.correlation to produce plots for each buffer size
chart.Correlation(.,
histogram = TRUE,
method = "pearson")
# # close file
# dev.off()
# Null model
lynx_null <- glm(cbind(lynx, absent_lynx) ~ 1,
data = prop_det_data$`500 meter buffer`,
family = 'binomial')
# Natural heterogeneity
lynx_nat <- glm(cbind(lynx, absent_lynx) ~
scale(lc_broadleaf) +
scale(lc_grassland) +
scale(lc_mixed) +
scale(lc_shrub),
data = prop_det_data$`500 meter buffer`,
family = 'binomial')
# forest harvest (TBD how this will look with yearly harvest data)
lynx_harvest <- glm(cbind(lynx, absent_lynx) ~
scale(harvest_2000) +
scale(harvest_pre2000),
data = prop_det_data$`500 meter buffer`,
family = 'binomial')
# agriculture
lynx_ag <- glm(cbind(lynx, absent_lynx) ~
scale(lc_agriculture),
data = prop_det_data$`500 meter buffer`,
family = 'binomial')
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
# transportation (roads) * at 5000m buffer can't combine with other industrial features (correlated with pipeline & wells)
lynx_rds <- glm(cbind(lynx, absent_lynx) ~
scale(roads),
data = prop_det_data$`500 meter buffer`,
family = 'binomial')
# linear energy development
lynx_linear_energy <- glm(cbind(lynx, absent_lynx) ~
scale(pipeline) +
scale(seismic_lines),
data = prop_det_data$`500 meter buffer`,
family = 'binomial')
# polygonal energy development
lynx_poly_energy <- glm(cbind(lynx, absent_lynx) ~
scale(wells),
data = prop_det_data$`500 meter buffer`,
family = 'binomial')
# energy development - can do at this scale pipeline and well corr = 0.50
lynx_energy <- glm(cbind(lynx, absent_lynx) ~
scale(pipeline) +
scale(seismic_lines) +
scale(wells),
data = prop_det_data$`500 meter buffer`,
family = 'binomial')
# polygonal disturbance (harvest + polygonal energy development + agriculture)
lynx_poly <- glm(cbind(lynx, absent_lynx) ~
scale(harvest_2000) +
scale(harvest_pre2000) +
scale(wells),
data = prop_det_data$`500 meter buffer`,
family = 'binomial')
# linear disturbance (transportation + linear energy development)
lynx_linear <- glm(cbind(lynx, absent_lynx) ~
scale(roads) +
# pipeline + can't include correlated w/ roads 0.62
scale(seismic_lines),
data = prop_det_data$`500 meter buffer`,
family = 'binomial')
# overall human disturbance (limit to 5 vars)
lynx_disturb <- glm(cbind(lynx, absent_lynx) ~
scale(harvest_2000) +
scale(harvest_pre2000) +
scale(roads) +
# pipeline + can't include correlated w/ roads 0.62
scale(seismic_lines) +
scale(wells),
data = prop_det_data$`500 meter buffer`,
family = 'binomial')
# linear + natural (have to pic max of 5) based on detections chose grassland had most detections and broadleaf which likely to have lynx as well
lynx_linear_nat <- glm(cbind(lynx, absent_lynx) ~
scale(roads) +
scale(seismic_lines) +
scale(lc_grassland) +
scale(lc_broadleaf),
data = prop_det_data$`500 meter buffer`,
family = 'binomial')
# polygonal features and nat (limit 5 vars)
lynx_poly_nat <- glm(cbind(lynx, absent_lynx) ~
scale(harvest_2000) +
scale(harvest_pre2000) +
scale(wells) +
scale(lc_grassland) +
scale(lc_broadleaf),
data = prop_det_data$`500 meter buffer`,
family = 'binomial')
model.sel(lynx_null,
lynx_nat,
lynx_harvest,
lynx_ag,
lynx_rds,
lynx_energy,
lynx_linear_energy,
lynx_poly_energy,
lynx_poly,
lynx_linear,
lynx_disturb,
lynx_linear_nat,
lynx_poly_nat)
## Model selection table
## (Int) scl(lc_brd) scl(lc_grs) scl(lc_mxd) scl(lc_shr)
## lynx_poly -3.054
## lynx_disturb -3.088
## lynx_poly_nat -3.077 -0.1784 -0.22260
## lynx_harvest -2.895
## lynx_energy -2.936
## lynx_poly_energy -2.847
## lynx_nat -2.897 -0.2371 -0.03393 0.08888 0.5084
## lynx_ag -10.930
## lynx_linear_nat -2.900 -0.6166 -0.31440
## lynx_null -2.693
## lynx_linear -2.756
## lynx_linear_energy -2.756
## lynx_rds -2.694
## scl(hrv_2000) scl(hrv_p20) scl(lc_agr) scl(rds) scl(ppl)
## lynx_poly 0.5261 0.3975
## lynx_disturb 0.5356 0.4273 -0.2921000
## lynx_poly_nat 0.4882 0.3233
## lynx_harvest 0.4406 0.4906
## lynx_energy -0.528000
## lynx_poly_energy
## lynx_nat
## lynx_ag -24.13
## lynx_linear_nat 0.0005603
## lynx_null
## lynx_linear 0.0271300
## lynx_linear_energy -0.009947
## lynx_rds 0.0499000
## scl(ssm_lns) scl(wll) df logLik AICc delta weight
## lynx_poly 0.5514 4 -81.072 170.9 0.00 0.533
## lynx_disturb 0.1513 0.7173 6 -79.150 171.9 1.03 0.319
## lynx_poly_nat 0.5458 6 -79.918 173.5 2.57 0.148
## lynx_harvest 3 -89.701 185.8 14.95 0.000
## lynx_energy -0.1876 0.7485 4 -88.684 186.1 15.22 0.000
## lynx_poly_energy 0.5396 2 -93.474 191.2 20.28 0.000
## lynx_nat 5 -91.222 193.6 22.69 0.000
## lynx_ag 2 -95.695 195.6 24.72 0.000
## lynx_linear_nat -0.2650 5 -94.139 199.4 28.53 0.000
## lynx_null 1 -103.399 208.9 37.98 0.000
## lynx_linear -0.3255 3 -102.082 210.6 39.72 0.000
## lynx_linear_energy -0.3275 3 -102.100 210.6 39.75 0.000
## lynx_rds 2 -103.331 210.9 39.99 0.000
## Models ranked by AICc(x)
summary(lynx_disturb)
##
## Call:
## glm(formula = cbind(lynx, absent_lynx) ~ scale(harvest_2000) +
## scale(harvest_pre2000) + scale(roads) + scale(seismic_lines) +
## scale(wells), family = "binomial", data = prop_det_data$`500 meter buffer`)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.3647 -1.2366 -0.6194 0.8424 4.3812
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -3.0883 0.1831 -16.863 < 2e-16 ***
## scale(harvest_2000) 0.5356 0.1583 3.384 0.000713 ***
## scale(harvest_pre2000) 0.4273 0.1396 3.061 0.002210 **
## scale(roads) -0.2921 0.1680 -1.738 0.082140 .
## scale(seismic_lines) 0.1513 0.2367 0.639 0.522676
## scale(wells) 0.7173 0.1544 4.645 3.4e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 150.75 on 58 degrees of freedom
## Residual deviance: 102.25 on 53 degrees of freedom
## (1 observation deleted due to missingness)
## AIC: 170.3
##
## Number of Fisher Scoring iterations: 5
summary(lynx_poly)
##
## Call:
## glm(formula = cbind(lynx, absent_lynx) ~ scale(harvest_2000) +
## scale(harvest_pre2000) + scale(wells), family = "binomial",
## data = prop_det_data$`500 meter buffer`)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.2702 -1.2665 -0.6939 0.6836 4.3124
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -3.0538 0.1781 -17.147 < 2e-16 ***
## scale(harvest_2000) 0.5261 0.1476 3.564 0.000366 ***
## scale(harvest_pre2000) 0.3975 0.1281 3.103 0.001919 **
## scale(wells) 0.5514 0.1292 4.268 1.97e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 150.75 on 58 degrees of freedom
## Residual deviance: 106.09 on 55 degrees of freedom
## (1 observation deleted due to missingness)
## AIC: 170.14
##
## Number of Fisher Scoring iterations: 5
# report VIF
vif(lynx_poly)
## scale(harvest_2000) scale(harvest_pre2000) scale(wells)
## 1.074548 1.036778 1.110789
# plot VIF
plot(lynx_poly,
which = 1,
main = 'Vif lynx model')
# additional plot of each variable
# calculate vif
vif(lynx_poly) %>%
# Converts the named vector returned by vif() into a tidy tibble
enframe(name = 'Predictor',
value = 'VIF') %>%
# plot with ggplot
ggplot(aes(x = reorder(Predictor, VIF), # reorders from smallest VIF to largest (not sure I want like this)
y = VIF)) +
# plot as bars
geom_bar(stat = 'identity', fill = 'skyblue') +
# add labels
labs(x = 'Predictor',
y = 'VIF') +
# set theme
theme_classic()
Calculate odds
lynx_model_odds <-
# extract the coefficients and upper and lower CI
tidy(lynx_poly, conf.int = TRUE) %>%
# convert the coefficients into odds ratios
mutate(estimate = exp(estimate),
conf.low = exp(conf.low),
conf.high = exp(conf.high)) %>%
# rename columns
rename('lower' = conf.low,
'upper' = conf.high) %>%
# Remove intercept for plotting
filter(term != '(Intercept)')
Get lynx silhouette
lynx_img <- get_phylopic('24f763a3-accf-44c9-9a08-71e9834047b7')
Plot odds
# name to save plot later
lynx_odds_plot <-
# provide data and mapping aesthetics
ggplot(lynx_model_odds, aes(x = term,
y = estimate)) +
geom_point() +
geom_errorbar(aes(ymin = lower,
ymax = upper),
width = 0.2,
linewidth = 0.5,
position = position_dodge(width = 0.9)) +
geom_hline(yintercept = 1, linetype = "dashed") +
labs(y = 'Odds ratio') +
scale_x_discrete(labels = c('Harvest ppost 2000s',
'Harvest pre 2000s',
'Wells')) +
scale_y_continuous(expand = expansion(mult = c(0, 0.05)),
limits = c(0, NA)) +
coord_flip() +
add_phylopic(lynx_img,
x = 3.4,
y = 2.2,
ysize = 0.5) +
theme_classic() +
theme(axis.title.y = element_blank(),
axis.title = element_text(size = 16),
axis.text = element_text(size = 14))
lynx_odds_plot
Save plot
ggsave('figures/odds_plot_lynx.jpg',
lynx_odds_plot,
width = 14,
height = 10,
units = 'in',
dpi = 600)
# supply vector of fixed effects as they appear in model
lynx_fes <- c('wells',
'harvest_pre2000',
'harvest_2000')
# Use purrr to iterate ggpredict and rename the list elements
lynx_predicted_data <- map(set_names(lynx_fes), ~ {
ggpredict(lynx_poly, terms = paste0(.x, "[all]"))
})
# I viewed the full data from my environemnt but here's a printout of one variable
head(lynx_predicted_data$wells)
## # Predicted probabilities of cbind(lynx, absent_lynx)
##
## wells | Predicted | 95% CI
## ---------------------------------
## 0.00 | 0.03 | 0.02, 0.04
## 5.00e-03 | 0.03 | 0.02, 0.05
## 6.00e-03 | 0.04 | 0.02, 0.05
## 0.01 | 0.04 | 0.03, 0.06
## 0.01 | 0.04 | 0.03, 0.06
## 0.01 | 0.05 | 0.03, 0.06
##
## Adjusted for:
## * harvest_2000 = 0.12
## * harvest_pre2000 = 0.12
# name plot and assign to environment
lynx_well_plot <-
# provide data from ggpredict with x and y
ggplot(lynx_predicted_data$wells,
aes(x = x,
y = predicted)) +
# plot relationship with line
geom_line() +
# plot confidence with geom ribbon, must supply new aesthetics
geom_ribbon(aes(ymin = conf.low,
ymax = conf.high),
alpha = 0.4) +
# set the axis limits so all plots go from 0-1
scale_y_continuous(limits = c(0, 1)) +
# label axis
labs(x = 'Proportion of wells',
y = 'Predicted probabiity of occurrence') +
# specify overall theme
theme_classic() +
# change font size
theme(axis.title = element_text(size = 16),
axis.text = element_text(size = 14)) +
# add silhouette
add_phylopic(uuid = '24f763a3-accf-44c9-9a08-71e9834047b7',
x = 0.06,
y = 0.9,
ysize = 0.2)
lynx_well_plot
Save plot
ggsave('figures/lynx_well_plot.jpg',
lynx_well_plot,
width = 14,
height = 10,
units = 'in',
dpi = 600)
# name plot and assign to environment
lynx_harvest_pre_plot <-
# provide data from ggpredict with x and y
ggplot(lynx_predicted_data$harvest_pre2000,
aes(x = x,
y = predicted)) +
# plot relationship with line
geom_line() +
# plot confidence with geom ribbon, must supply new aesthetics
geom_ribbon(aes(ymin = conf.low,
ymax = conf.high),
alpha = 0.4) +
# set the axis limits so all plots go from 0-1
scale_y_continuous(limits = c(0, 1)) +
# label axis
labs(x = 'Proportion of timber harvest (pre 2000s)',
y = 'Predicted probabiity of occurrence') +
# specify overall theme
theme_classic() +
# change font size
theme(axis.title = element_text(size = 16),
axis.text = element_text(size = 14)) +
# add silhouette
add_phylopic(uuid = '24f763a3-accf-44c9-9a08-71e9834047b7',
x = 0.55,
y = 0.9,
ysize = 0.2)
lynx_harvest_pre_plot
Save plot
ggsave('figures/lynx_harvest_pre2000_plot.jpg',
lynx_harvest_pre_plot,
width = 14,
height = 10,
units = 'in',
dpi = 600)
# name plot and assign to environment
lynx_harvest_post_plot <-
# provide data from ggpredict with x and y
ggplot(lynx_predicted_data$harvest_2000,
aes(x = x,
y = predicted)) +
# plot relationship with line
geom_line() +
# plot confidence with geom ribbon, must supply new aesthetics
geom_ribbon(aes(ymin = conf.low,
ymax = conf.high),
alpha = 0.4) +
# set the axis limits so all plots go from 0-1
scale_y_continuous(limits = c(0, 1)) +
# label axis
labs(x = 'Proportion of timber harvest (post 2000s)',
y = 'Predicted probabiity of occurrence') +
# specify overall theme
theme_classic() +
# change font size
theme(axis.title = element_text(size = 16),
axis.text = element_text(size = 14)) +
# add silhouette
add_phylopic(uuid = '24f763a3-accf-44c9-9a08-71e9834047b7',
x = 0.55,
y = 0.9,
ysize = 0.2)
lynx_harvest_post_plot
Save plot
ggsave('figures/lynx_harvest_post2000_plot.jpg',
lynx_harvest_post_plot,
width = 14,
height = 10,
units = 'in',
dpi = 600)
500m was best fit buffer for moose
Let’s print the correlation plot for the 500m buffer again here for reference when developing the lynx specific models
prop_det_data$`500 meter buffer` %>%
# select only columns with covariates not other info to simplify the plot a bit
select(harvest:lc_shrub) %>%
# use chart.correlation to produce plots for each buffer size
chart.Correlation(.,
histogram = TRUE,
method = "pearson")
# Null model
moose_null <- glm(cbind(moose, absent_moose) ~ 1,
data = prop_det_data$`500 meter buffer`,
family = 'binomial')
# Natural heterogeneity
moose_nat <- glm(cbind(moose, absent_moose) ~
scale(lc_broadleaf) +
scale(lc_grassland) +
scale(lc_mixed) +
scale(lc_shrub),
data = prop_det_data$`500 meter buffer`,
family = 'binomial')
# forest harvest (TBD how this will look with yearly harvest data)
moose_harvest <- glm(cbind(moose, absent_moose) ~
scale(harvest_2000) +
scale(harvest_pre2000),
data = prop_det_data$`500 meter buffer`,
family = 'binomial')
# agriculture
moose_ag <- glm(cbind(moose, absent_moose) ~
scale(lc_agriculture),
data = prop_det_data$`500 meter buffer`,
family = 'binomial')
# transportation (roads) * at 5000m buffer can't combine with other industrial features (correlated with pipeline & wells)
moose_rds <- glm(cbind(moose, absent_moose) ~
scale(roads),
data = prop_det_data$`500 meter buffer`,
family = 'binomial')
# linear energy development
moose_linear_energy <- glm(cbind(moose, absent_moose) ~
scale(pipeline) +
scale(seismic_lines),
data = prop_det_data$`500 meter buffer`,
family = 'binomial')
# polygonal energy development
moose_poly_energy <- glm(cbind(moose, absent_moose) ~
scale(wells),
data = prop_det_data$`500 meter buffer`,
family = 'binomial')
# energy development - can do at this scale pipeline and well corr = 0.50
moose_energy <- glm(cbind(moose, absent_moose) ~
scale(pipeline) +
scale(seismic_lines) +
scale(wells),
data = prop_det_data$`500 meter buffer`,
family = 'binomial')
# polygonal disturbance (harvest + polygonal energy development + agriculture)
moose_poly <- glm(cbind(moose, absent_moose) ~
scale(harvest_2000) +
scale(harvest_pre2000) +
scale(wells),
data = prop_det_data$`500 meter buffer`,
family = 'binomial')
# linear disturbance (transportation + linear energy development)
moose_linear <- glm(cbind(moose, absent_moose) ~
scale(roads) +
# pipeline + can't include correlated w/ roads 0.62
scale(seismic_lines),
data = prop_det_data$`500 meter buffer`,
family = 'binomial')
# overall human disturbance (limit to 5 vars)
moose_disturb <- glm(cbind(moose, absent_moose) ~
scale(harvest_2000) +
scale(harvest_pre2000) +
scale(roads) +
# pipeline + can't include correlated w/ roads 0.62
scale(seismic_lines) +
scale(wells),
data = prop_det_data$`500 meter buffer`,
family = 'binomial')
# linear + natural (have to pic max of 5) based on detections (most and least)
moose_linear_nat <- glm(cbind(moose, absent_moose) ~
scale(roads) +
# pipeline + can't include correlated w/ roads 0.62
scale(seismic_lines) +
scale(lc_broadleaf) +
scale(lc_shrub),
data = prop_det_data$`500 meter buffer`,
family = 'binomial')
# polygonal features and nat (limit 5 vars)
moose_poly_nat <- glm(cbind(moose, absent_moose) ~
scale(harvest_2000) +
scale(harvest_pre2000) +
scale(wells) +
scale(lc_broadleaf) +
scale(lc_shrub),
data = prop_det_data$`500 meter buffer`,
family = 'binomial')
model.sel(moose_null,
moose_nat,
moose_harvest,
moose_ag,
moose_rds,
moose_energy,
moose_linear_energy,
moose_poly_energy,
moose_poly,
moose_linear,
moose_disturb,
moose_linear_nat,
moose_poly_nat)
## Model selection table
## (Int) scl(lc_brd) scl(lc_grs) scl(lc_mxd) scl(lc_shr)
## moose_disturb -1.125
## moose_linear -1.127
## moose_linear_nat -1.138 0.1878 0.14330
## moose_rds -1.088
## moose_nat -1.057 0.5851 0.36 0.2408 0.52700
## moose_poly -1.042
## moose_poly_nat -1.049 0.1905 0.09757
## moose_energy -1.071
## moose_poly_energy -1.031
## moose_linear_energy -1.064
## moose_harvest -1.014
## moose_null -1.012
## moose_ag -1.013
## scl(hrv_2000) scl(hrv_p20) scl(lc_agr) scl(rds) scl(ppl)
## moose_disturb 0.1131 0.1206 -0.4982
## moose_linear -0.6126
## moose_linear_nat -0.5550
## moose_rds -0.5935
## moose_nat
## moose_poly 0.1611 0.1882
## moose_poly_nat 0.1409 0.1679
## moose_energy -0.2275
## moose_poly_energy
## moose_linear_energy -0.4117
## moose_harvest 0.1691 0.1107
## moose_null
## moose_ag -0.1023
## scl(ssm_lns) scl(wll) df logLik AICc delta weight
## moose_disturb -0.2332 -0.2167 6 -162.613 338.8 0.00 0.445
## moose_linear -0.2690 3 -166.573 339.6 0.74 0.307
## moose_linear_nat -0.2745 5 -164.552 340.2 1.39 0.222
## moose_rds 2 -170.156 344.5 5.68 0.026
## moose_nat 5 -174.004 359.1 20.30 0.000
## moose_poly -0.4444 4 -175.820 360.4 21.54 0.000
## moose_poly_nat -0.3790 6 -173.847 361.3 22.47 0.000
## moose_energy -0.2150 -0.2938 4 -176.567 361.9 23.03 0.000
## moose_poly_energy -0.3949 2 -181.639 367.5 28.65 0.000
## moose_linear_energy -0.1765 3 -180.684 367.8 28.96 0.000
## moose_harvest 3 -188.594 383.6 44.78 0.000
## moose_null 1 -192.490 387.1 48.21 0.000
## moose_ag 2 -191.625 387.5 48.62 0.000
## Models ranked by AICc(x)
summary(moose_linear)
##
## Call:
## glm(formula = cbind(moose, absent_moose) ~ scale(roads) + scale(seismic_lines),
## family = "binomial", data = prop_det_data$`500 meter buffer`)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -3.8495 -1.4148 -0.5335 1.0941 3.9400
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.12721 0.08298 -13.584 < 2e-16 ***
## scale(roads) -0.61257 0.09856 -6.215 5.12e-10 ***
## scale(seismic_lines) -0.26902 0.10605 -2.537 0.0112 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 246.28 on 58 degrees of freedom
## Residual deviance: 194.45 on 56 degrees of freedom
## (1 observation deleted due to missingness)
## AIC: 339.15
##
## Number of Fisher Scoring iterations: 5
# report VIF
vif(moose_linear)
## scale(roads) scale(seismic_lines)
## 1.004489 1.004489
# plot VIF
plot(moose_linear,
which = 1,
main = 'Vif moose model')
# additional plot of each variable
# calculate vif
vif(moose_linear) %>%
# Converts the named vector returned by vif() into a tidy tibble
enframe(name = 'Predictor',
value = 'VIF') %>%
# plot with ggplot
ggplot(aes(x = reorder(Predictor, VIF), # reorders from smallest VIF to largest (not sure I want like this)
y = VIF)) +
# plot as bars
geom_bar(stat = 'identity', fill = 'skyblue') +
# add labels
labs(x = 'Predictor',
y = 'VIF') +
# set theme
theme_classic()
Calculate odds
moose_model_odds <-
# extract the coefficients and upper and lower CI
tidy(moose_linear, conf.int = TRUE) %>%
# convert the coefficients into odds ratios
mutate(estimate = exp(estimate),
conf.low = exp(conf.low),
conf.high = exp(conf.high)) %>%
# rename columns
rename('lower' = conf.low,
'upper' = conf.high) %>%
# Remove intercept for plotting
filter(term != '(Intercept)')
Get silhouette for plots
moose_img <- get_phylopic('74eab34a-498c-4614-aece-f02361874f79')
Plot odds
# name to save plot later
moose_odds_plot <-
# provide data and mapping aesthetics
ggplot(moose_model_odds, aes(x = term,
y = estimate)) +
geom_point() +
geom_errorbar(aes(ymin = lower,
ymax = upper),
width = 0.2,
linewidth = 0.5,
position = position_dodge(width = 0.9)) +
geom_hline(yintercept = 1, linetype = "dashed") +
labs(y = 'Odds ratio') +
scale_x_discrete(labels = c('Roads',
'Seismic lines')) +
scale_y_continuous(expand = expansion(mult = c(0, 0.05)),
limits = c(0, 2)) +
coord_flip() +
add_phylopic(moose_img,
x = 2.2,
y = 1.9,
ysize = 0.5) +
theme_classic() +
theme(axis.title.y = element_blank(),
axis.title = element_text(size = 16),
axis.text = element_text(size = 14))
moose_odds_plot
Save plot
ggsave('figures/odds_plot_moose.jpg',
moose_odds_plot,
width = 14,
height = 10,
units = 'in',
dpi = 600)
# supply vector of fixed effects as they appear in model
moose_fes <- c('roads',
'seismic_lines')
# Use purrr to iterate ggpredict and rename the list elements
moose_predicted_data <- map(set_names(moose_fes), ~ {
ggpredict(moose_linear, terms = paste0(.x, "[all]"))
})
# I viewed the full data from my environemnt but here's a printout of one variable
head(moose_predicted_data$roads)
## # Predicted probabilities of cbind(moose, absent_moose)
##
## roads | Predicted | 95% CI
## ---------------------------------
## 0.00 | 0.35 | 0.31, 0.40
## 2.00e-03 | 0.32 | 0.29, 0.36
## 4.00e-03 | 0.30 | 0.26, 0.33
## 5.00e-03 | 0.28 | 0.25, 0.31
## 6.00e-03 | 0.27 | 0.24, 0.30
## 7.00e-03 | 0.26 | 0.23, 0.29
##
## Adjusted for:
## * seismic_lines = 0.00
# name plot and assign to environment
moose_seismic_plot <-
# provide data from ggpredict with x and y
ggplot(moose_predicted_data$seismic_lines,
aes(x = x,
y = predicted)) +
# plot relationship with line
geom_line() +
# plot confidence with geom ribbon, must supply new aesthetics
geom_ribbon(aes(ymin = conf.low,
ymax = conf.high),
alpha = 0.4) +
# set the axis limits so all plots go from 0-1
scale_y_continuous(limits = c(0, 1)) +
# label axis
labs(x = 'Proportion of seismic lines',
y = 'Predicted probabiity of occurrence') +
# specify overall theme
theme_classic() +
# change font size
theme(axis.title = element_text(size = 16),
axis.text = element_text(size = 14)) +
# add silhouette
add_phylopic(uuid = '74eab34a-498c-4614-aece-f02361874f79',
x = 0.028,
y = 0.9,
ysize = 0.2)
moose_seismic_plot
Save plot
ggsave('figures/moose_seismic_lines_plot.jpg',
moose_seismic_plot,
width = 14,
height = 10,
units = 'in',
dpi = 600)
# name plot and assign to environment
moose_rds_plot <-
# provide data from ggpredict with x and y
ggplot(moose_predicted_data$roads,
aes(x = x,
y = predicted)) +
# plot relationship with line
geom_line() +
# plot confidence with geom ribbon, must supply new aesthetics
geom_ribbon(aes(ymin = conf.low,
ymax = conf.high),
alpha = 0.4) +
# set the axis limits so all plots go from 0-1
scale_y_continuous(limits = c(0, 1)) +
# label axis
labs(x = 'Proportion of roads',
y = 'Predicted probabiity of occurrence') +
# specify overall theme
theme_classic() +
# change font size
theme(axis.title = element_text(size = 16),
axis.text = element_text(size = 14)) +
# add silhouette
add_phylopic(uuid = '74eab34a-498c-4614-aece-f02361874f79',
x = 0.03,
y = 0.9,
ysize = 0.2)
moose_rds_plot
Save plot
ggsave('figures/moose_roads_plot.jpg',
moose_rds_plot,
width = 14,
height = 10,
units = 'in',
dpi = 600)
no longer using the remaining covariates, chose simpler top model
# name plot and assign to environment
moose_wells_plot <-
# provide data from ggpredict with x and y
ggplot(moose_predicted_data$wells,
aes(x = x,
y = predicted)) +
# plot relationship with line
geom_line() +
# plot confidence with geom ribbon, must supply new aesthetics
geom_ribbon(aes(ymin = conf.low,
ymax = conf.high),
alpha = 0.4) +
# set the axis limits so all plots go from 0-1
scale_y_continuous(limits = c(0, 1)) +
# label axis
labs(x = 'Proportion of wells',
y = 'Predicted probabiity of occurrence') +
# specify overall theme
theme_classic() +
# change font size
theme(axis.title = element_text(size = 16),
axis.text = element_text(size = 14)) +
# add silhouette
add_phylopic(uuid = '74eab34a-498c-4614-aece-f02361874f79',
x = 0.06,
y = 0.9,
ysize = 0.2)
moose_wells_plot
Save plot
ggsave('figures/moose_wells_plot.jpg',
moose_wells_plot,
width = 14,
height = 10,
units = 'in',
dpi = 600)
# name plot and assign to environment
moose_harvest_pre_plot <-
# provide data from ggpredict with x and y
ggplot(moose_predicted_data$harvest_pre2000,
aes(x = x,
y = predicted)) +
# plot relationship with line
geom_line() +
# plot confidence with geom ribbon, must supply new aesthetics
geom_ribbon(aes(ymin = conf.low,
ymax = conf.high),
alpha = 0.4) +
# set the axis limits so all plots go from 0-1
scale_y_continuous(limits = c(0, 1)) +
# label axis
labs(x = 'Proportion of timber harvest (pre 2000s)',
y = 'Predicted probabiity of occurrence') +
# specify overall theme
theme_classic() +
# change font size
theme(axis.title = element_text(size = 16),
axis.text = element_text(size = 14)) +
# add silhouette
add_phylopic(uuid = '74eab34a-498c-4614-aece-f02361874f79',
x = 0.56,
y = 0.9,
ysize = 0.2)
moose_harvest_pre_plot
Save plot
ggsave('figures/moose_harvest_pre2000_plot.jpg',
moose_harvest_pre_plot,
width = 14,
height = 10,
units = 'in',
dpi = 600)
# name plot and assign to environment
moose_harvest_post_plot <-
# provide data from ggpredict with x and y
ggplot(moose_predicted_data$harvest_2000,
aes(x = x,
y = predicted)) +
# plot relationship with line
geom_line() +
# plot confidence with geom ribbon, must supply new aesthetics
geom_ribbon(aes(ymin = conf.low,
ymax = conf.high),
alpha = 0.4) +
# set the axis limits so all plots go from 0-1
scale_y_continuous(limits = c(0, 1)) +
# label axis
labs(x = 'Proportion of timber harvest (post 2000s)',
y = 'Predicted probabiity of occurrence') +
# specify overall theme
theme_classic() +
# change font size
theme(axis.title = element_text(size = 16),
axis.text = element_text(size = 14)) +
# add silhouette
add_phylopic(uuid = '74eab34a-498c-4614-aece-f02361874f79',
x = 0.56,
y = 0.9,
ysize = 0.2)
moose_harvest_post_plot
Save plot
ggsave('figures/moose_harvest_post2000_plot.jpg',
moose_harvest_post_plot,
width = 14,
height = 10,
units = 'in',
dpi = 600)
4000m was top buffer for hares
# open file to save plot
# png("figures/corr_plot_4000.png",
# width = 1000,
# height = 800)
prop_det_data$`4000 meter buffer` %>%
# select only columns with covariates not other info to simplify the plot a bit
select(harvest:lc_shrub) %>%
# use chart.correlation to produce plots for each buffer size
chart.Correlation(.,
histogram = TRUE,
method = "pearson")
# # close file
# dev.off()
# Null model
snowshoe_hare_null <- glm(cbind(snowshoe_hare, absent_snowshoe_hare) ~ 1,
data = prop_det_data$`4000 meter buffer`,
family = 'binomial')
# Natural heterogeneity (I've taken broadleaf out of this model because the sign and significance were changing between models and is correlated 0.5 with grassland adn slightly with wells 0.48 and the sign for wells was changing depending on whether broadleaf was included in the model or not)
snowshoe_hare_nat <- glm(cbind(snowshoe_hare, absent_snowshoe_hare) ~
# scale(lc_broadleaf) +
scale(lc_grassland) +
scale(lc_mixed) +
scale(lc_shrub),
data = prop_det_data$`4000 meter buffer`,
family = 'binomial')
# forest harvest
snowshoe_hare_harvest <- glm(cbind(snowshoe_hare, absent_snowshoe_hare) ~
scale(harvest_2000) +
scale(harvest_pre2000),
data = prop_det_data$`4000 meter buffer`,
family = 'binomial')
# agriculture
snowshoe_hare_ag <- glm(cbind(snowshoe_hare, absent_snowshoe_hare) ~
scale(lc_agriculture),
data = prop_det_data$`4000 meter buffer`,
family = 'binomial')
# transportation (roads) * at 40000m buffer can't combine with other industrial features (correlated with pipeline & wells)
snowshoe_hare_rds <- glm(cbind(snowshoe_hare, absent_snowshoe_hare) ~
scale(roads),
data = prop_det_data$`4000 meter buffer`,
family = 'binomial')
# linear energy development
snowshoe_hare_linear_energy <- glm(cbind(snowshoe_hare, absent_snowshoe_hare) ~
scale(pipeline) +
scale(seismic_lines),
data = prop_det_data$`4000 meter buffer`,
family = 'binomial')
# polygonal energy development
snowshoe_hare_poly_energy <- glm(cbind(snowshoe_hare, absent_snowshoe_hare) ~
scale(wells),
data = prop_det_data$`4000 meter buffer`,
family = 'binomial')
# # energy development - can't do due to correlations between wells and pipeline 0.91
# snowshoe_hare_energy <- glm(cbind(snowshoe_hare, absent_snowshoe_hare) ~
# scale(pipeline) +
# scale(seismic_lines) +
# scale(wells),
# data = prop_det_data$`4000 meter buffer`,
# family = 'binomial')
# polygonal disturbance (harvest + polygonal energy development + agriculture)
snowshoe_hare_poly <- glm(cbind(snowshoe_hare, absent_snowshoe_hare) ~
scale(harvest_2000) +
scale(harvest_pre2000) +
scale(wells),
data = prop_det_data$`4000 meter buffer`,
family = 'binomial')
# linear disturbance (transportation + linear energy development)
snowshoe_hare_linear <- glm(cbind(snowshoe_hare, absent_snowshoe_hare) ~
# scale(roads) can't include correlated with pipeline 0.81
scale(pipeline) +
scale(seismic_lines),
data = prop_det_data$`4000 meter buffer`,
family = 'binomial')
# overall human disturbance (limit to 5 vars)
snowshoe_hare_disturb <- glm(cbind(snowshoe_hare, absent_snowshoe_hare) ~
scale(harvest_2000) +
scale(harvest_pre2000) +
# scale(roads) + correlated w/ wells 0.80
# pipeline + can't include correlated w/ wells 0.91
scale(seismic_lines) +
scale(wells),
data = prop_det_data$`4000 meter buffer`,
family = 'binomial')
# linear + natural (have to pic max of 5) based on detections
snowshoe_hare_linear_nat <- glm(cbind(snowshoe_hare, absent_snowshoe_hare) ~
scale(pipeline) +
scale(seismic_lines) +
scale(lc_grassland) +
scale(lc_shrub),
data = prop_det_data$`4000 meter buffer`,
family = 'binomial')
# polygonal features and nat (limit 5 vars)
snowshoe_hare_poly_nat <- glm(cbind(snowshoe_hare, absent_snowshoe_hare) ~
scale(harvest_2000) +
scale(harvest_pre2000) +
scale(wells) +
scale(lc_grassland) +
scale(lc_shrub),
data = prop_det_data$`4000 meter buffer`,
family = 'binomial')
model.sel(snowshoe_hare_null,
snowshoe_hare_nat,
snowshoe_hare_harvest,
snowshoe_hare_ag,
snowshoe_hare_rds,
snowshoe_hare_linear_energy,
snowshoe_hare_poly_energy,
snowshoe_hare_poly,
snowshoe_hare_linear,
snowshoe_hare_disturb,
snowshoe_hare_linear_nat,
snowshoe_hare_poly_nat)
## Model selection table
## (Int) scl(lc_grs) scl(lc_mxd) scl(lc_shr)
## snowshoe_hare_disturb -2.239
## snowshoe_hare_poly -2.195
## snowshoe_hare_poly_nat -2.195 0.17570 -0.068540
## snowshoe_hare_linear_energy -2.104
## snowshoe_hare_linear -2.104
## snowshoe_hare_poly_energy -2.055
## snowshoe_hare_linear_nat -2.106 -0.02587 0.008613
## snowshoe_hare_harvest -2.060
## snowshoe_hare_rds -2.044
## snowshoe_hare_null -2.001
## snowshoe_hare_ag -2.009
## snowshoe_hare_nat -2.012 0.24110 0.05564 0.084590
## scl(hrv_2000) scl(hrv_p20) scl(lc_agr) scl(rds)
## snowshoe_hare_disturb -0.5864 0.2927
## snowshoe_hare_poly -0.5872 0.3385
## snowshoe_hare_poly_nat -0.5062 0.4055
## snowshoe_hare_linear_energy
## snowshoe_hare_linear
## snowshoe_hare_poly_energy
## snowshoe_hare_linear_nat
## snowshoe_hare_harvest -0.1994 0.3116
## snowshoe_hare_rds 0.2637
## snowshoe_hare_null
## snowshoe_hare_ag -0.1501
## snowshoe_hare_nat
## scl(ppl) scl(ssm_lns) scl(wll) df logLik AICc
## snowshoe_hare_disturb -0.2804 0.5655 5 -138.199 287.5
## snowshoe_hare_poly 0.5232 4 -140.944 290.6
## snowshoe_hare_poly_nat 0.4278 6 -139.949 293.5
## snowshoe_hare_linear_energy 0.3068 -0.3211 3 -146.222 298.9
## snowshoe_hare_linear 0.3068 -0.3211 3 -146.222 298.9
## snowshoe_hare_poly_energy 0.3108 2 -149.304 302.8
## snowshoe_hare_linear_nat 0.3199 -0.3289 5 -146.199 303.5
## snowshoe_hare_harvest 3 -149.249 304.9
## snowshoe_hare_rds 2 -151.119 306.5
## snowshoe_hare_null 1 -154.247 310.6
## snowshoe_hare_ag 2 -153.390 311.0
## snowshoe_hare_nat 4 -151.400 311.5
## delta weight
## snowshoe_hare_disturb 0.00 0.787
## snowshoe_hare_poly 3.10 0.167
## snowshoe_hare_poly_nat 5.98 0.040
## snowshoe_hare_linear_energy 11.35 0.003
## snowshoe_hare_linear 11.35 0.003
## snowshoe_hare_poly_energy 15.29 0.000
## snowshoe_hare_linear_nat 16.00 0.000
## snowshoe_hare_harvest 17.40 0.000
## snowshoe_hare_rds 18.92 0.000
## snowshoe_hare_null 23.03 0.000
## snowshoe_hare_ag 23.46 0.000
## snowshoe_hare_nat 24.01 0.000
## Models ranked by AICc(x)
summary(snowshoe_hare_nat)
##
## Call:
## glm(formula = cbind(snowshoe_hare, absent_snowshoe_hare) ~ scale(lc_grassland) +
## scale(lc_mixed) + scale(lc_shrub), family = "binomial", data = prop_det_data$`4000 meter buffer`)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.6762 -1.9997 -1.3035 0.9614 4.4112
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -2.01202 0.10343 -19.452 <2e-16 ***
## scale(lc_grassland) 0.24112 0.10378 2.323 0.0202 *
## scale(lc_mixed) 0.05564 0.10762 0.517 0.6052
## scale(lc_shrub) 0.08459 0.11672 0.725 0.4686
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 234.52 on 58 degrees of freedom
## Residual deviance: 228.83 on 55 degrees of freedom
## (1 observation deleted due to missingness)
## AIC: 310.8
##
## Number of Fisher Scoring iterations: 5
summary(snowshoe_hare_disturb)
##
## Call:
## glm(formula = cbind(snowshoe_hare, absent_snowshoe_hare) ~ scale(harvest_2000) +
## scale(harvest_pre2000) + scale(seismic_lines) + scale(wells),
## family = "binomial", data = prop_det_data$`4000 meter buffer`)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.5874 -1.7958 -0.9407 0.3509 5.1033
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -2.2388 0.1284 -17.441 < 2e-16 ***
## scale(harvest_2000) -0.5864 0.1852 -3.166 0.00154 **
## scale(harvest_pre2000) 0.2927 0.1102 2.656 0.00790 **
## scale(seismic_lines) -0.2804 0.1234 -2.271 0.02313 *
## scale(wells) 0.5655 0.1364 4.145 3.4e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 234.52 on 58 degrees of freedom
## Residual deviance: 202.42 on 54 degrees of freedom
## (1 observation deleted due to missingness)
## AIC: 286.4
##
## Number of Fisher Scoring iterations: 5
# report VIF
vif(snowshoe_hare_disturb)
## scale(harvest_2000) scale(harvest_pre2000) scale(seismic_lines)
## 2.269465 1.427346 1.072494
## scale(wells)
## 1.816374
# plot VIF
plot(snowshoe_hare_disturb,
which = 1,
main = 'Vif snowshoe hare model')
# additional plot of each variable
# calculate vif
vif(snowshoe_hare_disturb) %>%
# Converts the named vector returned by vif() into a tidy tibble
enframe(name = 'Predictor',
value = 'VIF') %>%
# plot with ggplot
ggplot(aes(x = reorder(Predictor, VIF), # reorders from smallest VIF to largest (not sure I want like this)
y = VIF)) +
# plot as bars
geom_bar(stat = 'identity', fill = 'skyblue') +
# add labels
labs(x = 'Predictor',
y = 'VIF') +
# set theme
theme_classic()
Calculate odds
hare_model_odds <-
# extract the coefficients and upper and lower CI
tidy(snowshoe_hare_disturb, conf.int = TRUE) %>%
# convert the coefficients into odds ratios
mutate(estimate = exp(estimate),
conf.low = exp(conf.low),
conf.high = exp(conf.high)) %>%
# rename columns
rename('lower' = conf.low,
'upper' = conf.high) %>%
# Remove intercept for plotting
filter(term != '(Intercept)')
Get silhouette for plots
hare_img <- get_phylopic(get_uuid(name = 'Lepus americanus'))
Plot odds
# name to save plot later
hare_odds_plot <-
# provide data and mapping aesthetics
ggplot(hare_model_odds, aes(x = term,
y = estimate)) +
geom_point() +
geom_errorbar(aes(ymin = lower,
ymax = upper),
width = 0.2,
linewidth = 0.5,
position = position_dodge(width = 0.9)) +
geom_hline(yintercept = 1, linetype = "dashed") +
labs(y = 'Odds ratio') +
scale_x_discrete(labels = c('Harvest post 2000s',
'Harvest pre 2000s',
'Seismic lines',
'Wells')) +
scale_y_continuous(expand = expansion(mult = c(0, 0.05)),
limits = c(0, NA)) +
coord_flip() +
add_phylopic(hare_img,
x = 4.25,
y = 2.5,
ysize = 0.55) +
theme_classic() +
theme(axis.title.y = element_blank(),
axis.title = element_text(size = 16),
axis.text = element_text(size = 14))
hare_odds_plot
Save plot
ggsave('figures/odds_plot_snowshoehare.jpg',
hare_odds_plot,
width = 14,
height = 10,
units = 'in',
dpi = 600)
# supply vector of fixed effects as they appear in model
hare_fes <- c('wells',
'seismic_lines',
'harvest_2000',
'harvest_pre2000')
# Use purrr to iterate ggpredict and rename the list elements
hare_predicted_data <- map(set_names(hare_fes), ~ {
ggpredict(snowshoe_hare_disturb, terms = paste0(.x, "[all]"))
})
# I viewed the full data from my environment but here's a printout of one variable
head(hare_predicted_data$wells)
## # Predicted probabilities of cbind(snowshoe_hare, absent_snowshoe_hare)
##
## wells | Predicted | 95% CI
## ---------------------------------
## 0.00 | 0.06 | 0.04, 0.09
## 1.00e-03 | 0.06 | 0.04, 0.09
## 2.00e-03 | 0.06 | 0.04, 0.09
## 3.00e-03 | 0.07 | 0.05, 0.10
## 4.00e-03 | 0.07 | 0.05, 0.10
## 8.00e-03 | 0.09 | 0.07, 0.12
##
## Adjusted for:
## * harvest_2000 = 0.14
## * harvest_pre2000 = 0.09
## * seismic_lines = 0.00
# and now plot with ggplot
# name plot and assign to environment
hare_well_plot <-
# provide data from ggpredict with x and y
ggplot(hare_predicted_data$wells,
aes(x = x,
y = predicted)) +
# plot relationship with line
geom_line() +
# plot confidence with geom ribbon, must supply new aesthetics
geom_ribbon(aes(ymin = conf.low,
ymax = conf.high),
alpha = 0.4) +
# set the axis limits so all plots go from 0-1
scale_y_continuous(limits = c(0, 1)) +
# label axis
labs(x = 'Proportion of wells',
y = 'Predicted probabiity of occurrence') +
# specify overall theme
theme_classic() +
# change font size
theme(axis.title = element_text(size = 16),
axis.text = element_text(size = 14)) +
# add silhouette
add_phylopic(uuid = get_uuid(name = 'Lepus americanus'),
x = 0.03,
y = 0.9,
ysize = 0.2)
hare_well_plot
Save plot
ggsave('figures/snowshoehare_wells_plot.jpg',
hare_well_plot,
width = 14,
height = 10,
units = 'in',
dpi = 600)
# name plot and assign to environment
hare_seismic_plot <-
# provide data from ggpredict with x and y
ggplot(hare_predicted_data$seismic_lines,
aes(x = x,
y = predicted)) +
# plot relationship with line
geom_line() +
# plot confidence with geom ribbon, must supply new aesthetics
geom_ribbon(aes(ymin = conf.low,
ymax = conf.high),
alpha = 0.4) +
# set the axis limits so all plots go from 0-1
scale_y_continuous(limits = c(0, 1)) +
# label axis
labs(x = 'Proportion of seismic lines',
y = 'Predicted probabiity of occurrence') +
# specify overall theme
theme_classic() +
# change font size
theme(axis.title = element_text(size = 16),
axis.text = element_text(size = 14)) +
# add silhouette
add_phylopic(uuid = get_uuid(name = 'Lepus americanus'),
x = 0.009,
y = 0.9,
ysize = 0.2)
hare_seismic_plot
Save plot
ggsave('figures/snowshoehare_seismic_plot.jpg',
hare_seismic_plot,
width = 14,
height = 10,
units = 'in',
dpi = 600)
# name plot and assign to environment
hare_harvest_pre_plot <-
# provide data from ggpredict with x and y
ggplot(hare_predicted_data$harvest_pre2000,
aes(x = x,
y = predicted)) +
# plot relationship with line
geom_line() +
# plot confidence with geom ribbon, must supply new aesthetics
geom_ribbon(aes(ymin = conf.low,
ymax = conf.high),
alpha = 0.4) +
# set the axis limits so all plots go from 0-1
scale_y_continuous(limits = c(0, 1)) +
# label axis
labs(x = 'Proportion of timber harvest (pre 2000s)',
y = 'Predicted probabiity of occurrence') +
# specify overall theme
theme_classic() +
# change font size
theme(axis.title = element_text(size = 16),
axis.text = element_text(size = 14)) +
# add silhouette
add_phylopic(uuid = get_uuid(name = 'Lepus americanus'),
x = 0.33,
y = 0.9,
ysize = 0.2)
hare_harvest_pre_plot
Save plot
ggsave('figures/snowshoehare_harvest_pre200s_plot.jpg',
hare_harvest_pre_plot,
width = 14,
height = 10,
units = 'in',
dpi = 600)
# name plot and assign to environment
hare_harvest_post_plot <-
# provide data from ggpredict with x and y
ggplot(hare_predicted_data$harvest_2000,
aes(x = x,
y = predicted)) +
# plot relationship with line
geom_line() +
# plot confidence with geom ribbon, must supply new aesthetics
geom_ribbon(aes(ymin = conf.low,
ymax = conf.high),
alpha = 0.4) +
# set the axis limits so all plots go from 0-1
scale_y_continuous(limits = c(0, 1)) +
# label axis
labs(x = 'Proportion of timber harvest (post 2000s)',
y = 'Predicted probabiity of occurrence') +
# specify overall theme
theme_classic() +
# change font size
theme(axis.title = element_text(size = 16),
axis.text = element_text(size = 14)) +
# add silhouette
add_phylopic(uuid = get_uuid(name = 'Lepus americanus'),
x = 0.43,
y = 0.9,
ysize = 0.2)
hare_harvest_post_plot
Save plot
ggsave('figures/snowshoehare_harvest_post200s_plot.jpg',
hare_harvest_post_plot,
width = 14,
height = 10,
units = 'in',
dpi = 600)
4250m was best buffer
# # open file to save plot
# png("figures/corr_plot_4250.png",
# width = 1000,
# height = 800)
prop_det_data$`4250 meter buffer` %>%
# select only columns with covariates not other info to simplify the plot a bit
select(harvest:lc_shrub) %>%
# use chart.correlation to produce plots for each buffer size
chart.Correlation(.,
histogram = TRUE,
method = "pearson")
# # close file
# dev.off()
# Null model
w_deer_null <- glm(cbind(`white-tailed_deer`, `absent_white-tailed_deer`) ~ 1,
data = prop_det_data$`4250 meter buffer`,
family = 'binomial')
# Natural heterogeneity (checked how taking out broadleaf or grassland affected model results since this top model is suspiciously well performing and broadleaf was causing issues with snowshoe models)
w_deer_nat <- glm(cbind(`white-tailed_deer`, `absent_white-tailed_deer`) ~
scale(lc_broadleaf) +
scale(lc_grassland) +
scale(lc_mixed) +
scale(lc_shrub),
data = prop_det_data$`4250 meter buffer`,
family = 'binomial')
w_deer_nat_grass <- glm(cbind(`white-tailed_deer`, `absent_white-tailed_deer`) ~
# scale(lc_broadleaf) +
scale(lc_grassland) +
scale(lc_mixed) +
scale(lc_shrub),
data = prop_det_data$`4250 meter buffer`,
family = 'binomial')
w_deer_nat_broadleaf <- glm(cbind(`white-tailed_deer`, `absent_white-tailed_deer`) ~
scale(lc_broadleaf) +
# scale(lc_grassland) +
scale(lc_mixed) +
scale(lc_shrub),
data = prop_det_data$`4250 meter buffer`,
family = 'binomial')
# forest harvest
w_deer_harvest <- glm(cbind(`white-tailed_deer`, `absent_white-tailed_deer`) ~
scale(harvest_2000) +
scale(harvest_pre2000),
data = prop_det_data$`4250 meter buffer`,
family = 'binomial')
# agriculture
w_deer_ag <- glm(cbind(`white-tailed_deer`, `absent_white-tailed_deer`) ~
scale(lc_agriculture),
data = prop_det_data$`4250 meter buffer`,
family = 'binomial')
# transportation (roads) * at 42500m buffer can't combine with other industrial features (correlated with pipeline & wells)
w_deer_rds <- glm(cbind(`white-tailed_deer`, `absent_white-tailed_deer`) ~
scale(roads),
data = prop_det_data$`4250 meter buffer`,
family = 'binomial')
# linear energy development
w_deer_linear_energy <- glm(cbind(`white-tailed_deer`, `absent_white-tailed_deer`) ~
scale(pipeline) +
scale(seismic_lines),
data = prop_det_data$`4250 meter buffer`,
family = 'binomial')
# polygonal energy development
w_deer_poly_energy <- glm(cbind(`white-tailed_deer`, `absent_white-tailed_deer`) ~
scale(wells),
data = prop_det_data$`4250 meter buffer`,
family = 'binomial')
# # energy development - can' do at this scale pipeline and well corr = 0.50't do due to correlations
# w_deer_energy <- glm(cbind(`white-tailed_deer`, `absent_white-tailed_deer`) ~
# scale(pipeline) +
# scale(seismic_lines) +
# scale(wells),
# data = prop_det_data$`4250 meter buffer`,
# family = 'binomial')
# polygonal disturbance (harvest + polygonal energy development + agriculture)
w_deer_poly <- glm(cbind(`white-tailed_deer`, `absent_white-tailed_deer`) ~
scale(harvest_2000) +
scale(harvest_pre2000) +
scale(wells),
data = prop_det_data$`4250 meter buffer`,
family = 'binomial')
# linear disturbance (transportation + linear energy development)
w_deer_linear <- glm(cbind(`white-tailed_deer`, `absent_white-tailed_deer`) ~
scale(roads) +
# pipeline + can't include correlated w/ roads 0.81
scale(seismic_lines),
data = prop_det_data$`4250 meter buffer`,
family = 'binomial')
# overall human disturbance (limit to 5 vars)
w_deer_disturb <- glm(cbind(`white-tailed_deer`, `absent_white-tailed_deer`) ~
scale(harvest_2000) +
scale(harvest_pre2000) +
# scale(roads) +
# pipeline + can't include correlated w/ roads 0.81 and wells 0.91
scale(seismic_lines) +
scale(wells),
data = prop_det_data$`4250 meter buffer`,
family = 'binomial')
# linear + natural (have to pic max of 5) based on detections
w_deer_linear_nat <- glm(cbind(`white-tailed_deer`, `absent_white-tailed_deer`) ~
scale(roads) +
# pipeline + can't include correlated w/ roads 0.81
scale(seismic_lines) +
scale(lc_broadleaf) +
scale(lc_shrub),
data = prop_det_data$`4250 meter buffer`,
family = 'binomial')
# polygonal features and nat (limit 5 vars)
w_deer_poly_nat <- glm(cbind(`white-tailed_deer`, `absent_white-tailed_deer`) ~
scale(harvest_2000) +
scale(harvest_pre2000) +
scale(wells) +
scale(lc_broadleaf) +
scale(lc_shrub),
data = prop_det_data$`4250 meter buffer`,
family = 'binomial')
model.sel(w_deer_null,
w_deer_nat,
w_deer_nat_broadleaf,
w_deer_nat_grass,
w_deer_harvest,
w_deer_ag,
w_deer_rds,
w_deer_linear_energy,
w_deer_poly_energy,
w_deer_poly,
w_deer_linear,
w_deer_disturb,
w_deer_linear_nat,
w_deer_poly_nat)
## Model selection table
## (Int) scl(lc_brd) scl(lc_grs) scl(lc_mxd) scl(lc_shr)
## w_deer_nat 0.2826 0.5422 0.4071 0.5062 -0.2718
## w_deer_nat_broadleaf 0.2790 0.3169 0.5292 -0.4069
## w_deer_nat_grass 0.2753 0.1328 0.6181 -0.5522
## w_deer_poly_nat 0.2729 0.6053 -0.1841
## w_deer_linear_nat 0.2251 0.6985 -0.3588
## w_deer_harvest 0.3001
## w_deer_disturb 0.3074
## w_deer_poly 0.3043
## w_deer_poly_energy 0.2901
## w_deer_linear 0.2883
## w_deer_linear_energy 0.2847
## w_deer_null 0.2749
## w_deer_ag 0.2761
## w_deer_rds 0.2810
## scl(hrv_2000) scl(hrv_p20) scl(lc_agr) scl(rds) scl(ppl)
## w_deer_nat
## w_deer_nat_broadleaf
## w_deer_nat_grass
## w_deer_poly_nat 0.006951 -0.3136
## w_deer_linear_nat 0.27180
## w_deer_harvest -0.131800 -0.4057
## w_deer_disturb -0.110200 -0.3805
## w_deer_poly -0.104600 -0.3974
## w_deer_poly_energy
## w_deer_linear -0.05016
## w_deer_linear_energy -0.0008187
## w_deer_null
## w_deer_ag 0.09962
## w_deer_rds -0.07812
## scl(ssm_lns) scl(wll) df logLik AICc delta weight
## w_deer_nat 5 -184.491 380.1 0.00 1
## w_deer_nat_broadleaf 4 -194.065 396.9 16.76 0
## w_deer_nat_grass 4 -199.790 408.3 28.21 0
## w_deer_poly_nat 0.22020 6 -207.628 428.9 48.76 0
## w_deer_linear_nat -0.1409 5 -210.150 431.4 51.32 0
## w_deer_harvest 3 -238.537 483.5 103.40 0
## w_deer_disturb 0.1393 -0.05577 5 -236.398 483.9 103.81 0
## w_deer_poly -0.05697 4 -238.281 485.3 105.19 0
## w_deer_poly_energy -0.22040 2 -257.078 518.4 138.26 0
## w_deer_linear 0.1777 3 -258.658 523.8 143.64 0
## w_deer_linear_energy 0.1855 3 -258.919 524.3 144.16 0
## w_deer_null 1 -262.559 527.2 147.07 0
## w_deer_ag 2 -261.542 527.3 147.18 0
## w_deer_rds 2 -261.899 528.0 147.90 0
## Models ranked by AICc(x)
I ran three natural models because it was coming out suspiciously on top (70+ AIC better than other models) and I wanted to ensure no issues were arising with changing sign etc for beta coefficients with grassland and broadleaf since r = 0.51, and the snowshoe hare model had issues but it seems the full natural model still performs best and none of the beta coefficient signs are changing if the variables included in the model don’t change, so will stick with the full natural model
summary(w_deer_nat)
##
## Call:
## glm(formula = cbind(`white-tailed_deer`, `absent_white-tailed_deer`) ~
## scale(lc_broadleaf) + scale(lc_grassland) + scale(lc_mixed) +
## scale(lc_shrub), family = "binomial", data = prop_det_data$`4250 meter buffer`)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -4.2321 -1.1269 0.1071 1.4841 3.3903
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.28257 0.07367 3.836 0.000125 ***
## scale(lc_broadleaf) 0.54215 0.09979 5.433 5.55e-08 ***
## scale(lc_grassland) 0.40707 0.09496 4.287 1.81e-05 ***
## scale(lc_mixed) 0.50619 0.08272 6.119 9.41e-10 ***
## scale(lc_shrub) -0.27179 0.10421 -2.608 0.009104 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 377.77 on 58 degrees of freedom
## Residual deviance: 221.63 on 54 degrees of freedom
## (1 observation deleted due to missingness)
## AIC: 378.98
##
## Number of Fisher Scoring iterations: 4
summary(w_deer_nat_broadleaf)
##
## Call:
## glm(formula = cbind(`white-tailed_deer`, `absent_white-tailed_deer`) ~
## scale(lc_broadleaf) + scale(lc_mixed) + scale(lc_shrub),
## family = "binomial", data = prop_det_data$`4250 meter buffer`)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -4.2777 -1.2106 0.1176 1.4637 4.2977
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.27897 0.07313 3.815 0.000136 ***
## scale(lc_broadleaf) 0.31695 0.08506 3.726 0.000195 ***
## scale(lc_mixed) 0.52918 0.08338 6.347 2.20e-10 ***
## scale(lc_shrub) -0.40688 0.10418 -3.905 9.41e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 377.77 on 58 degrees of freedom
## Residual deviance: 240.78 on 55 degrees of freedom
## (1 observation deleted due to missingness)
## AIC: 396.13
##
## Number of Fisher Scoring iterations: 4
summary(w_deer_nat_grass)
##
## Call:
## glm(formula = cbind(`white-tailed_deer`, `absent_white-tailed_deer`) ~
## scale(lc_grassland) + scale(lc_mixed) + scale(lc_shrub),
## family = "binomial", data = prop_det_data$`4250 meter buffer`)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -4.5039 -1.4160 0.2897 1.5131 3.7745
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.27528 0.07300 3.771 0.000163 ***
## scale(lc_grassland) 0.13285 0.07807 1.702 0.088835 .
## scale(lc_mixed) 0.61809 0.08080 7.650 2.01e-14 ***
## scale(lc_shrub) -0.55219 0.09581 -5.764 8.23e-09 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 377.77 on 58 degrees of freedom
## Residual deviance: 252.23 on 55 degrees of freedom
## (1 observation deleted due to missingness)
## AIC: 407.58
##
## Number of Fisher Scoring iterations: 4
# report VIF
vif(w_deer_nat)
## scale(lc_broadleaf) scale(lc_grassland) scale(lc_mixed) scale(lc_shrub)
## 1.782017 1.400047 1.074848 1.274127
# plot VIF
plot(w_deer_nat,
which = 1,
main = 'Vif white-tailed deer model')
# additional plot of each variable
# calculate vif
vif(w_deer_nat) %>%
# Converts the named vector returned by vif() into a tidy tibble
enframe(name = 'Predictor',
value = 'VIF') %>%
# plot with ggplot
ggplot(aes(x = reorder(Predictor, VIF), # reorders from smallest VIF to largest (not sure I want like this)
y = VIF)) +
# plot as bars
geom_bar(stat = 'identity', fill = 'skyblue') +
# add labels
labs(x = 'Predictor',
y = 'VIF') +
# set theme
theme_classic()
w_deer_model_odds <-
# extract the coefficients and upper and lower CI
tidy(w_deer_nat, conf.int = TRUE) %>%
# convert the coefficients into odds ratios
mutate(estimate = exp(estimate),
conf.low = exp(conf.low),
conf.high = exp(conf.high)) %>%
# rename columns
rename('lower' = conf.low,
'upper' = conf.high) %>%
# Remove intercept for plotting
filter(term != '(Intercept)')
Get silhouette for plots
w_deer_img <- get_phylopic('6038e80c-398d-47b2-9a69-2b9edf436f64')
Plot odds
# name to save plot later
w_deer_odds_plot <-
# provide data and mapping aesthetics
ggplot(w_deer_model_odds, aes(x = term,
y = estimate)) +
geom_point() +
geom_errorbar(aes(ymin = lower,
ymax = upper),
width = 0.2,
linewidth = 0.5,
position = position_dodge(width = 0.9)) +
geom_hline(yintercept = 1, linetype = "dashed") +
labs(y = 'Odds ratio') +
scale_x_discrete(labels = c('Broadleaf Forest',
'Grassland',
'Mixed Forest',
'Shrubs')) +
scale_y_continuous(expand = expansion(mult = c(0, 0.05)),
limits = c(0, NA)) +
coord_flip() +
add_phylopic(w_deer_img,
x = 4.2,
y = 2,
ysize = 0.75) +
theme_classic() +
theme(axis.title.y = element_blank(),
axis.title = element_text(size = 16),
axis.text = element_text(size = 14))
w_deer_odds_plot
Save plot
ggsave('figures/odds_plot_whitetaileddeer.jpg',
w_deer_odds_plot,
width = 14,
height = 10,
units = 'in',
dpi = 600)
# supply vector of fixed effects as they appear in model
w_deer_fes <- c('lc_broadleaf',
'lc_grassland',
'lc_mixed',
'lc_shrub')
# Use purrr to iterate ggpredict and rename the list elements
w_deer_predicted_data <- map(set_names(w_deer_fes), ~ {
ggpredict(w_deer_nat, terms = paste0(.x, "[all]"))
})
# I viewed the full data from my environemnt but here's a printout of one variable
head(w_deer_predicted_data$lc_broadleaf)
## # Predicted probabilities of cbind(`white-tailed_deer`, `absent_white-tailed_deer`)
##
## lc_broadleaf | Predicted | 95% CI
## -------------------------------------
## 2.00e-03 | 0.38 | 0.31, 0.46
## 0.01 | 0.39 | 0.32, 0.46
## 0.02 | 0.39 | 0.33, 0.47
## 0.06 | 0.41 | 0.35, 0.48
## 0.06 | 0.41 | 0.35, 0.48
## 0.07 | 0.42 | 0.36, 0.49
##
## Adjusted for:
## * lc_grassland = 0.04
## * lc_mixed = 0.04
## * lc_shrub = 0.16
w_deer_broadleaf_plot <-
# provide data from ggpredict with x and y
ggplot(w_deer_predicted_data$lc_broadleaf,
aes(x = x,
y = predicted)) +
# plot relationship with line
geom_line() +
# plot confidence with geom ribbon, must supply new aesthetics
geom_ribbon(aes(ymin = conf.low,
ymax = conf.high),
alpha = 0.4) +
# set the axis limits so all plots go from 0-1
scale_y_continuous(limits = c(0, 1)) +
# label axis
labs(x = 'Proportion of broadleaf forest',
y = 'Predicted probabiity of occurrence') +
# specify overall theme
theme_classic() +
# change font size
theme(axis.title = element_text(size = 16),
axis.text = element_text(size = 14)) +
# add silhouette
add_phylopic(uuid = '6038e80c-398d-47b2-9a69-2b9edf436f64',
x = 0.9,
y = 0.95,
ysize = 0.2)
w_deer_broadleaf_plot
Save plot
ggsave('figures/whitetaileddeer_broadleaf_plot.jpg',
w_deer_broadleaf_plot,
width = 14,
height = 10,
units = 'in',
dpi = 600)
w_deer_grass_plot <-
# provide data from ggpredict with x and y
ggplot(w_deer_predicted_data$lc_grassland,
aes(x = x,
y = predicted)) +
# plot relationship with line
geom_line() +
# plot confidence with geom ribbon, must supply new aesthetics
geom_ribbon(aes(ymin = conf.low,
ymax = conf.high),
alpha = 0.4) +
# set the axis limits so all plots go from 0-1
scale_y_continuous(limits = c(0, 1)) +
# label axis
labs(x = 'Proportion of grassland',
y = 'Predicted probabiity of occurrence') +
# specify overall theme
theme_classic() +
# change font size
theme(axis.title = element_text(size = 16),
axis.text = element_text(size = 14)) +
# add silhouette
add_phylopic(uuid = '6038e80c-398d-47b2-9a69-2b9edf436f64',
x = 0.12,
y = 0.95,
ysize = 0.2)
w_deer_grass_plot
Save plot
ggsave('figures/whitetaileddeer_grassland_plot.jpg',
w_deer_grass_plot,
width = 14,
height = 10,
units = 'in',
dpi = 600)
w_deer_mixed_plot <-
# provide data from ggpredict with x and y
ggplot(w_deer_predicted_data$lc_mixed,
aes(x = x,
y = predicted)) +
# plot relationship with line
geom_line() +
# plot confidence with geom ribbon, must supply new aesthetics
geom_ribbon(aes(ymin = conf.low,
ymax = conf.high),
alpha = 0.4) +
# set the axis limits so all plots go from 0-1
scale_y_continuous(limits = c(0, 1)) +
# label axis
labs(x = 'Proportion of mixed forest',
y = 'Predicted probabiity of occurrence') +
# specify overall theme
theme_classic() +
# change font size
theme(axis.title = element_text(size = 16),
axis.text = element_text(size = 14)) +
# add silhouette
add_phylopic(uuid = '6038e80c-398d-47b2-9a69-2b9edf436f64',
x = 0.125,
y = 0.95,
ysize = 0.2)
w_deer_mixed_plot
Save plot
ggsave('figures/whitetaileddeer_mixed_plot.jpg',
w_deer_mixed_plot,
width = 14,
height = 10,
units = 'in',
dpi = 600)
w_deer_shrub_plot <-
# provide data from ggpredict with x and y
ggplot(w_deer_predicted_data$lc_shrub,
aes(x = x,
y = predicted)) +
# plot relationship with line
geom_line() +
# plot confidence with geom ribbon, must supply new aesthetics
geom_ribbon(aes(ymin = conf.low,
ymax = conf.high),
alpha = 0.4) +
# set the axis limits so all plots go from 0-1
scale_y_continuous(limits = c(0, 1)) +
# label axis
labs(x = 'Proportion of shrub',
y = 'Predicted probabiity of occurrence') +
# specify overall theme
theme_classic() +
# change font size
theme(axis.title = element_text(size = 16),
axis.text = element_text(size = 14)) +
# add silhouette
add_phylopic(uuid = '6038e80c-398d-47b2-9a69-2b9edf436f64',
x = 0.7,
y = 0.95,
ysize = 0.2)
w_deer_shrub_plot
Save plot
ggsave('figures/whitetaileddeer_shrub_plot.jpg',
w_deer_shrub_plot,
width = 14,
height = 10,
units = 'in',
dpi = 600)
This section will focuse on combining the individual plots generated for each species into nice figures for the report/publication
For the species we have less data for we will run a logistic regression with overall presence absence data instead of proportional monthly presence absence data. This data is much more coarse which is why we’d prefer the proportional binomial, but for these elusive/rare species we can use it to get some insights into responses to landscape disturbance etc.
We will repeat the buffer selection process for each species in our logistic regression, like we did for the proportional binomial models
# create a vector with the species in the proportional detection data (prop_det_data) this one is unnecessarily long but I want to be descriptive throughout this code chunk
# pb = proportional binomial
log_species_list <- c('elk',
'red_fox',
'grizzly_bear',
'mule_deer')
# create custom function to run models for a given species
run_log_models_for_species <- function(species) {
# provide pb data
pres_absen_dat %>%
# use purrr to apply following function to all species
purrr::map(
~.x %>%
# run glm by pasting the species name in for the cbind function
glm(
formula = as.formula(paste0(
'`', species, '` ~ ',
# use non-correlated variables
'harvest_2000 + ',
'harvest_pre2000 + ',
# 'roads + ',
'seismic_lines + ',
'wells +',
# 'lc_agriculture + ',
'lc_broadleaf + ',
'lc_grassland + ',
'lc_mixed + ',
'lc_shrub'
)),
data = .,
family = 'binomial'
)
)
}
# Iterate this function over each species in the list and run the models
log_models_by_species <- purrr::map(log_species_list, run_log_models_for_species)
# Custom function to compare models for a single species and print species name
compare_log_models <- function(models, species_name) {
cat("\nModel Selection for Species:", species_name, "\n")
log_model_sel_results <- model.sel(models)
print(as.data.frame(log_model_sel_results))
return(as.data.frame(log_model_sel_results))
}
# Use map2 to iterate over each species' models and names, and compare models
log_model_comparisons <- purrr::map2(log_models_by_species,
log_species_list,
compare_log_models)
##
## Model Selection for Species: elk
## (Intercept) harvest_2000 harvest_pre2000 lc_broadleaf
## 750 meter buffer -2.984556 -1.1847804 6.8438514 3.377765
## 5000 meter buffer -3.869485 -8.2085193 0.9390016 6.399096
## 500 meter buffer -3.699477 -0.5344409 4.2024218 3.918399
## 250 meter buffer -3.944921 -1.2637958 1.2416182 3.868219
## 4750 meter buffer -3.601657 -7.2334969 0.5160077 6.089971
## 4500 meter buffer -3.265856 -6.6882020 0.4293326 5.561618
## 1000 meter buffer -2.473577 -0.2742373 6.2442696 2.643027
## 4250 meter buffer -3.038668 -6.5246570 0.5858783 5.331202
## 4000 meter buffer -2.728440 -6.5438656 1.0138478 5.024380
## 3750 meter buffer -2.544838 -6.2241463 1.6065982 4.352093
## 1250 meter buffer -2.603551 -1.7328852 3.8945277 3.460962
## 1500 meter buffer -2.464689 -2.9825744 3.5988760 3.023027
## 3500 meter buffer -2.657565 -5.3842407 1.9073805 3.861357
## 1750 meter buffer -2.394250 -3.5555478 3.5222124 2.681559
## 3250 meter buffer -2.739237 -4.6606051 1.8315329 3.669955
## 2000 meter buffer -2.249801 -3.8848902 4.0009541 2.208290
## 3000 meter buffer -2.650114 -3.8537193 2.1574270 3.228236
## 2750 meter buffer -2.408576 -3.8566084 3.1730430 2.419082
## 2250 meter buffer -2.165379 -3.5492701 4.1652221 1.776832
## 2500 meter buffer -2.204187 -3.5591083 3.7155130 2.068868
## lc_grassland lc_mixed lc_shrub seismic_lines wells
## 750 meter buffer 7.5176304 -2.064569 -0.8752784 -106.17191427 -45.331971
## 5000 meter buffer 15.3323068 -8.782072 -4.6846132 -44.51253157 146.836650
## 500 meter buffer 6.4974412 -4.305941 0.8451838 -61.24629775 -16.521856
## 250 meter buffer 4.4722239 -3.359274 2.3639918 -3.85363474 -11.018721
## 4750 meter buffer 12.4009303 -10.358547 -3.3287502 -62.81252602 132.766061
## 4500 meter buffer 8.9230945 -10.829839 -2.6043598 -65.72019615 119.256618
## 1000 meter buffer 6.2353847 -2.768505 -2.1899571 -93.09845745 -38.661007
## 4250 meter buffer 6.1333504 -11.861745 -2.1336444 -76.85098945 113.977863
## 4000 meter buffer 2.3815256 -11.444242 -2.0026893 -98.52585952 108.672204
## 3750 meter buffer 1.2248224 -9.599093 -1.7911292 -77.32424720 91.281970
## 1250 meter buffer 4.6223961 -4.591243 0.3317447 -172.69007875 -5.851660
## 1500 meter buffer 3.6999742 -8.826869 0.1958494 -83.26312938 6.848499
## 3500 meter buffer 3.1959024 -8.396753 -1.4627892 -32.31899826 69.472866
## 1750 meter buffer 2.4359324 -8.612482 -0.2707444 -27.10912088 16.982073
## 3250 meter buffer 3.4608238 -8.462050 -0.7640113 -17.96656402 58.388582
## 2000 meter buffer 1.1283210 -7.226841 -1.0864604 16.40038339 21.197511
## 3000 meter buffer 3.2027819 -7.637719 -0.6486410 0.05988636 41.896024
## 2750 meter buffer 1.8148418 -5.773519 -1.1819112 38.89002874 29.771298
## 2250 meter buffer 1.0766063 -5.116110 -1.5171569 50.16596625 16.453486
## 2500 meter buffer 0.6707906 -4.959452 -1.5023843 32.03186480 23.364920
## df logLik AICc delta weight
## 750 meter buffer 9 -21.74340 65.16026 0.0000000 0.181818462
## 5000 meter buffer 9 -21.89391 65.46129 0.3010248 0.156412432
## 500 meter buffer 9 -22.08711 65.84769 0.6874302 0.128933093
## 250 meter buffer 9 -22.23336 66.14019 0.9799245 0.111390991
## 4750 meter buffer 9 -22.38939 66.45225 1.2919924 0.095298351
## 4500 meter buffer 9 -22.87604 67.42556 2.2652929 0.058578181
## 1000 meter buffer 9 -22.93500 67.54348 2.3832155 0.055224185
## 4250 meter buffer 9 -23.07705 67.82756 2.6673013 0.047911621
## 4000 meter buffer 9 -23.26059 68.19465 3.0343841 0.039877676
## 3750 meter buffer 9 -23.85020 69.37388 4.2136163 0.022113772
## 1250 meter buffer 9 -23.86941 69.41229 4.2520311 0.021693077
## 1500 meter buffer 9 -24.06996 69.81338 4.6531221 0.017751103
## 3500 meter buffer 9 -24.34850 70.37048 5.2102135 0.013435520
## 1750 meter buffer 9 -24.48939 70.65226 5.4919965 0.011669872
## 3250 meter buffer 9 -24.71155 71.09656 5.9363002 0.009345161
## 2000 meter buffer 9 -24.77881 71.23108 6.0708213 0.008737273
## 3000 meter buffer 9 -25.14873 71.97094 6.8106741 0.006035578
## 2750 meter buffer 9 -25.37258 72.41863 7.2583667 0.004825071
## 2250 meter buffer 9 -25.40865 72.49076 7.3304987 0.004654150
## 2500 meter buffer 9 -25.48909 72.65164 7.4913796 0.004294430
##
## Model Selection for Species: red_fox
## (Intercept) harvest_2000 harvest_pre2000 lc_broadleaf
## 4750 meter buffer -1.67421192 -9.462017 5.8739222 -1.0474395
## 5000 meter buffer -1.75161828 -9.062945 5.3539256 -0.6927321
## 4500 meter buffer -1.43415288 -9.802087 5.2138997 -0.9940044
## 4000 meter buffer -1.24527417 -11.009671 5.8859194 -0.8359904
## 3750 meter buffer -1.20230078 -10.162246 6.2707291 -0.7888612
## 3500 meter buffer -1.13660218 -9.588080 6.3272370 -0.8194820
## 4250 meter buffer -1.22314508 -10.191180 4.9513524 -0.8663478
## 250 meter buffer -2.35959325 -3.661237 -0.5327085 2.7657475
## 3250 meter buffer -0.98747230 -7.945267 6.0575060 -0.8895046
## 3000 meter buffer -0.74245894 -7.004071 5.6784377 -1.2134070
## 2750 meter buffer -0.43544139 -7.410979 5.2754014 -1.4077034
## 2500 meter buffer -0.20569071 -7.566560 5.1930833 -1.7175311
## 2250 meter buffer -0.07776786 -6.923804 4.4688210 -1.5175109
## 2000 meter buffer -0.03232413 -5.967370 3.8446830 -1.3354461
## 500 meter buffer -2.28908738 -5.941814 0.7361307 2.5793769
## 1250 meter buffer -0.45763908 -2.887739 1.1354691 0.7343673
## 750 meter buffer -0.37280006 -2.787769 2.0834140 -0.1902017
## 1750 meter buffer -0.25695368 -4.961400 2.0138520 -0.3376095
## 1500 meter buffer -0.37674990 -3.940810 1.0483061 0.4832832
## 1000 meter buffer -0.44743570 -2.687067 1.9308469 0.2158028
## lc_grassland lc_mixed lc_shrub seismic_lines wells
## 4750 meter buffer 21.959955766 -11.62308384 -5.67336926 414.19353 -26.29736
## 5000 meter buffer 21.957043560 -12.67497266 -5.75450759 411.34785 -20.57623
## 4500 meter buffer 18.287130872 -11.35273471 -4.60969468 368.35682 -22.04678
## 4000 meter buffer 15.481427276 -10.18530408 -3.16159159 289.22692 -20.49281
## 3750 meter buffer 16.079699271 -10.03708844 -3.13120233 259.16909 -34.25327
## 3500 meter buffer 15.217095257 -11.37868173 -3.18814472 250.67931 -36.34426
## 4250 meter buffer 15.273648428 -10.58510484 -3.62320697 312.01261 -20.84173
## 250 meter buffer 2.059767918 1.09938288 3.68620619 -104.89423 -96.37473
## 3250 meter buffer 13.429870588 -11.35882726 -3.29313250 228.66690 -46.78166
## 3000 meter buffer 10.786236049 -11.38242911 -3.46843764 233.31944 -54.51880
## 2750 meter buffer 6.445704331 -11.11161792 -3.21553965 212.84022 -42.44627
## 2500 meter buffer 3.298851576 -10.25229903 -3.32927411 216.21725 -38.01881
## 2250 meter buffer 1.301694918 -9.19181632 -3.21649965 168.12111 -33.99653
## 2000 meter buffer 0.673606384 -6.45610847 -3.11303605 117.51691 -39.27699
## 500 meter buffer 4.022937917 -0.58285720 6.05242429 -132.09829 -24.09794
## 1250 meter buffer -0.125715991 1.81380563 0.09216825 -193.83348 -35.96894
## 750 meter buffer 0.773021053 -2.48628914 0.02483707 -77.76918 -43.70306
## 1750 meter buffer 0.041406009 -2.40835384 -1.57237664 -11.51499 -29.02200
## 1500 meter buffer -0.044172167 -0.04154692 -0.25092001 -128.07258 -32.60843
## 1000 meter buffer 0.004585398 0.11584798 -0.15919406 -136.63575 -35.09561
## df logLik AICc delta weight
## 4750 meter buffer 9 -23.47287 68.61922 0.0000000 0.143249353
## 5000 meter buffer 9 -23.57064 68.81474 0.1955216 0.129907940
## 4500 meter buffer 9 -23.79046 69.25439 0.6351723 0.104271773
## 4000 meter buffer 9 -23.90812 69.48971 0.8704931 0.092697388
## 3750 meter buffer 9 -23.91786 69.50919 0.8899704 0.091799020
## 3500 meter buffer 9 -23.99070 69.65486 1.0356449 0.085350338
## 4250 meter buffer 9 -24.07394 69.82135 1.2021329 0.078533116
## 250 meter buffer 9 -24.14223 69.95793 1.3387073 0.073349317
## 3250 meter buffer 9 -24.42025 70.51397 1.8947491 0.055546043
## 3000 meter buffer 9 -24.70097 71.07542 2.4562005 0.041950342
## 2750 meter buffer 9 -25.07898 71.83144 3.2122194 0.028745382
## 2500 meter buffer 9 -25.29220 72.25787 3.6386529 0.023225722
## 2250 meter buffer 9 -25.71198 73.09743 4.4782096 0.015263770
## 2000 meter buffer 9 -26.11002 73.89352 5.2742997 0.010251633
## 500 meter buffer 9 -26.39609 74.46564 5.8464231 0.007701193
## 1250 meter buffer 9 -27.02959 75.73266 7.1134382 0.004087231
## 750 meter buffer 9 -27.09660 75.86666 7.2474414 0.003822353
## 1750 meter buffer 9 -27.14163 75.95673 7.3375095 0.003654035
## 1500 meter buffer 9 -27.16871 76.01088 7.3916623 0.003556425
## 1000 meter buffer 9 -27.32639 76.32624 7.7070218 0.003037625
##
## Model Selection for Species: grizzly_bear
## (Intercept) harvest_2000 harvest_pre2000 lc_broadleaf
## 500 meter buffer -3.2190637 1.96276237 -10.7970414 -1.09321381
## 1500 meter buffer -0.8179933 0.26758897 -8.3351078 -1.75317863
## 1750 meter buffer -0.8628394 -0.18279150 -8.2955521 -1.60118814
## 2250 meter buffer -1.0741304 -1.22942630 -10.2178731 -0.44707497
## 1000 meter buffer -1.2344741 1.22831022 -7.6575574 -1.83642838
## 1250 meter buffer -0.8645059 0.69440477 -7.0823279 -2.03046134
## 2000 meter buffer -0.9908101 -0.35301367 -9.0095702 -1.12566083
## 5000 meter buffer -3.8951105 7.05292074 4.8113246 0.59778663
## 4750 meter buffer -3.8732596 6.37013650 4.3002633 0.45643624
## 750 meter buffer -1.0965108 1.71220500 -5.6098538 -2.44844721
## 4500 meter buffer -3.5265494 4.99637976 2.4996811 0.51123077
## 2500 meter buffer -1.2192509 -1.40573520 -8.9010552 -0.30345774
## 250 meter buffer -0.7704370 -0.45314157 -4.1512397 -2.33707372
## 4250 meter buffer -3.2168473 3.79565335 0.8800248 0.65687361
## 4000 meter buffer -3.0413082 2.73722575 -0.3557537 0.79075131
## 3750 meter buffer -2.8575209 1.67143898 -1.5365930 0.94528556
## 2750 meter buffer -1.6055359 -1.25338738 -6.4430367 0.01344852
## 3500 meter buffer -2.5613938 0.71111237 -2.2634500 0.78665539
## 3250 meter buffer -2.2863844 -0.06805864 -2.7954171 0.55771128
## 3000 meter buffer -2.0042030 -0.81920581 -4.0346013 0.27626265
## lc_grassland lc_mixed lc_shrub seismic_lines wells
## 500 meter buffer -2.0792603 -1.1226536 3.3022369 60.840634 101.720498
## 1500 meter buffer -16.0395555 -2.5848846 2.4122741 -56.405679 74.591183
## 1750 meter buffer -16.6932282 -2.1554289 2.9296052 -62.751389 75.808908
## 2250 meter buffer -16.4993466 -3.7665389 4.7292531 -151.987395 92.089819
## 1000 meter buffer -8.1682537 -2.6656681 0.8566460 32.257597 63.341371
## 1250 meter buffer -11.5652601 -3.2252639 0.9130060 16.486032 61.330369
## 2000 meter buffer -15.9761080 -3.2355262 3.4030382 -95.743744 83.361159
## 5000 meter buffer 20.4025827 -15.2803526 0.8468933 55.455045 -49.623930
## 4750 meter buffer 19.3949270 -12.9615088 0.9209398 73.537035 -43.152532
## 750 meter buffer -5.3479766 -1.9217648 -0.5869029 53.872079 51.310160
## 4500 meter buffer 14.9426439 -11.9688972 1.6079028 46.680261 -22.208726
## 2500 meter buffer -12.6173740 -4.3965413 4.6432870 -126.029368 79.819445
## 250 meter buffer 0.3514854 -0.2358895 -0.1082480 20.979424 -9.157483
## 4250 meter buffer 10.8405383 -12.1745082 2.2569781 14.212517 -1.921045
## 4000 meter buffer 8.1765526 -12.8025063 2.7539529 2.156558 14.514723
## 3750 meter buffer 6.1016974 -12.3526015 3.3085848 -31.946626 29.893195
## 2750 meter buffer -8.0573235 -7.5184102 4.0794287 -69.026061 68.687380
## 3500 meter buffer 3.4722506 -13.3919641 3.3483987 -25.524572 38.322697
## 3250 meter buffer 1.3519411 -12.5286868 3.3226162 -31.251309 44.552860
## 3000 meter buffer -2.4585444 -10.0695966 3.4821198 -34.001414 55.594007
## df logLik AICc delta weight
## 500 meter buffer 9 -17.75783 57.18912 0.000000 0.739388293
## 1500 meter buffer 9 -20.64682 62.96712 5.777991 0.041133692
## 1750 meter buffer 9 -21.09201 63.85750 6.668371 0.026354463
## 2250 meter buffer 9 -21.21584 64.10515 6.916031 0.023284962
## 1000 meter buffer 9 -21.26162 64.19671 7.007588 0.022243040
## 1250 meter buffer 9 -21.32245 64.31837 7.129251 0.020930300
## 2000 meter buffer 9 -21.33723 64.34794 7.158814 0.020623188
## 5000 meter buffer 9 -21.46832 64.61011 7.420984 0.018089492
## 4750 meter buffer 9 -21.64738 64.96823 7.779110 0.015123778
## 750 meter buffer 9 -21.69783 65.06913 7.880009 0.014379721
## 4500 meter buffer 9 -22.09045 65.85437 8.665251 0.009710403
## 2500 meter buffer 9 -22.23293 66.13932 8.950199 0.008420957
## 250 meter buffer 9 -22.29749 66.26845 9.079326 0.007894452
## 4250 meter buffer 9 -22.40860 66.49067 9.301541 0.007064290
## 4000 meter buffer 9 -22.58924 66.85194 9.662819 0.005896823
## 3750 meter buffer 9 -22.76745 67.20836 10.019239 0.004934264
## 2750 meter buffer 9 -22.91246 67.49839 10.309263 0.004268198
## 3500 meter buffer 9 -22.94147 67.55642 10.367294 0.004146135
## 3250 meter buffer 9 -23.20371 68.08089 10.891769 0.003189737
## 3000 meter buffer 9 -23.29076 68.25499 11.065868 0.002923815
##
## Model Selection for Species: mule_deer
## (Intercept) harvest_2000 harvest_pre2000 lc_broadleaf
## 750 meter buffer -3.1292299 -6.3576372 1.8610623 2.930140
## 1000 meter buffer -3.7131449 -5.2245405 1.4017844 3.780531
## 1250 meter buffer -3.7885810 -3.6427315 1.0409759 3.882477
## 1500 meter buffer -3.8855367 -2.7014616 1.4868726 3.809702
## 1750 meter buffer -3.8365747 -2.1733092 1.4344405 4.099388
## 2000 meter buffer -3.6974280 -1.9615883 1.1071738 3.900098
## 2250 meter buffer -3.5592365 -1.4567441 1.0949685 3.728742
## 2500 meter buffer -3.5727703 -1.1122621 0.8166103 4.266187
## 500 meter buffer -1.9222060 -2.0738875 0.4360065 1.657459
## 2750 meter buffer -3.5148213 -0.6908063 0.7201640 4.421626
## 3000 meter buffer -3.4257902 -0.5846699 0.6033678 4.340469
## 3250 meter buffer -3.3621775 -0.5635506 0.7805070 4.193213
## 3500 meter buffer -3.1213205 -0.7476825 0.2409047 4.195602
## 3750 meter buffer -2.8544068 -0.4891239 -0.2956295 4.395500
## 4250 meter buffer -2.4422943 -0.8353376 -1.5949223 4.825207
## 4500 meter buffer -2.2216632 -1.2787595 -2.4959773 4.949997
## 4000 meter buffer -2.6235878 -0.5506916 -0.8554360 4.479570
## 5000 meter buffer -1.9701593 -0.9041669 -4.2099555 5.075073
## 4750 meter buffer -1.9846569 -1.1782371 -3.3117422 4.854453
## 250 meter buffer -0.6425509 -0.3562470 -0.1974735 -0.170585
## lc_grassland lc_mixed lc_shrub seismic_lines wells df
## 750 meter buffer 6.7925293 7.988791 2.2257006 10.996978 1.806159 9
## 1000 meter buffer 9.1068795 10.014914 3.0027515 -35.610818 11.710408 9
## 1250 meter buffer 10.2137456 10.618885 2.7241663 -48.775130 11.667112 9
## 1500 meter buffer 11.1565159 11.381501 1.7935036 -33.759720 15.117430 9
## 1750 meter buffer 11.8955782 12.716375 1.6931460 -75.781785 10.853072 9
## 2000 meter buffer 12.0158711 12.083161 1.4474379 -57.827061 11.451082 9
## 2250 meter buffer 11.9940602 10.630171 1.0159702 -41.767225 9.129137 9
## 2500 meter buffer 12.9418396 10.305415 1.2896287 -99.938608 5.048277 9
## 500 meter buffer 2.2791037 2.534968 -1.9518491 44.388329 -1.329792 9
## 2750 meter buffer 12.9515972 9.852599 1.0976579 -117.210017 2.103905 9
## 3000 meter buffer 11.3935669 8.755112 0.8215858 -101.129377 7.982603 9
## 3250 meter buffer 11.1261518 8.644488 0.5058774 -84.109410 7.854180 9
## 3500 meter buffer 8.6090250 7.327412 0.7978514 -102.742487 13.970564 9
## 3750 meter buffer 6.9126922 5.796932 1.1375897 -156.837849 13.565027 9
## 4250 meter buffer 1.5881787 3.879579 2.0466899 -241.086467 28.475725 9
## 4500 meter buffer -0.9987698 3.224561 2.4848706 -269.982985 36.633221 9
## 4000 meter buffer 4.2907029 4.476669 1.4782517 -184.721622 18.318944 9
## 5000 meter buffer -2.7232666 3.496807 3.1100175 -322.684924 35.235272 9
## 4750 meter buffer -2.6944964 3.159181 2.7288727 -288.057345 34.531749 9
## 250 meter buffer 0.5880810 1.048010 -2.8554404 2.831985 -12.631979 9
## logLik AICc delta weight
## 750 meter buffer -27.20696 76.08740 0.0000000 0.212964495
## 1000 meter buffer -27.26101 76.19549 0.1080946 0.201759860
## 1250 meter buffer -27.83688 77.34722 1.2598203 0.113433334
## 1500 meter buffer -27.85157 77.37662 1.2892180 0.111778189
## 1750 meter buffer -28.09456 77.86258 1.7751802 0.087666106
## 2000 meter buffer -28.62135 78.91617 2.8287753 0.051766221
## 2250 meter buffer -29.12514 79.92374 3.8363434 0.031279212
## 2500 meter buffer -29.14732 79.96811 3.8807068 0.030593026
## 500 meter buffer -29.16526 80.00398 3.9165821 0.030049151
## 2750 meter buffer -29.30665 80.28677 4.1993719 0.026087062
## 3000 meter buffer -29.62085 80.91517 4.8277668 0.019053334
## 3250 meter buffer -29.80465 81.28278 5.1953767 0.015854242
## 3500 meter buffer -30.11478 81.90303 5.8156276 0.011626787
## 3750 meter buffer -30.30637 82.28620 6.1988020 0.009599629
## 4250 meter buffer -30.41215 82.49777 6.4103674 0.008636019
## 4500 meter buffer -30.42430 82.52207 6.4346673 0.008531727
## 4000 meter buffer -30.44635 82.56617 6.4787712 0.008345645
## 5000 meter buffer -30.45066 82.57480 6.4873977 0.008309726
## 4750 meter buffer -30.52570 82.72488 6.6374785 0.007708982
## 250 meter buffer -30.96724 83.60795 7.5205477 0.004957252
Now that we have a best-fit buffer size for each species we can proceed with a logistic regression
I didn’t like how elk was performing as a proportional binomial and based on the detection data I don’t think there is enough to run it in that model framework, we will see how it looks as a logistic regeression model
750m
Let’s reprint the correlation plot for the best fit buffer size to reference when defining our models
# # open file to save plot
# png("figures/logistic_regression/corr_plot_750.png",
# width = 1000,
# height = 800)
pres_absen_dat$`750 meter buffer` %>%
# select only columns with covariates not other info to simplify the plot a bit
select(harvest:lc_shrub) %>%
# use chart.correlation to produce plots for each buffer size
chart.Correlation(.,
histogram = TRUE,
method = "pearson")
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
# # close file
# dev.off()
Overparameterization is much easier with logistic regression models because the rule is n = 10 fr the observations in your minority class (presence) for each parameter. So we need to calculate how many 1’s we have with each species so we know how many parameters we can have in our models. We have 59 observations total
# get number of presence and absences
summary(pres_absen_dat$`750 meter buffer`$elk)
## 0 1
## 48 11
With only 11 in our minority class we can run single model variables only, not sure if this will actually be useful for report or publication but will do an example model set with elk to take a look
# null
elk_null <- glm(elk ~ 1,
data = pres_absen_dat$`750 meter buffer`,
family = 'binomial')
# each landcover type
elk_ag <- glm(elk ~ scale(lc_agriculture),
data = pres_absen_dat$`750 meter buffer`,
family = 'binomial')
elk_broadleaf <- glm(elk ~ scale(lc_broadleaf),
data = pres_absen_dat$`750 meter buffer`,
family = 'binomial')
elk_coniferous <- glm(elk ~ scale(lc_coniferous),
data = pres_absen_dat$`750 meter buffer`,
family = 'binomial')
elk_grassland <- glm(elk ~ scale(lc_grassland),
data = pres_absen_dat$`750 meter buffer`,
family = 'binomial')
elk_mixed <- glm(elk ~ scale(lc_mixed),
data = pres_absen_dat$`750 meter buffer`,
family = 'binomial')
elk_shrub <- glm(elk ~ scale(lc_shrub),
data = pres_absen_dat$`750 meter buffer`,
family = 'binomial')
# HFI variables
elk_road <- glm(elk ~ scale(roads),
data = pres_absen_dat$`750 meter buffer`,
family = 'binomial')
elk_harvest <- glm(elk ~ scale(harvest),
data = pres_absen_dat$`750 meter buffer`,
family = 'binomial')
elk_harvest2000 <- glm(elk ~ scale(harvest_2000),
data = pres_absen_dat$`750 meter buffer`,
family = 'binomial')
elk_harvest_pre2000 <- glm(elk ~ scale(harvest_pre2000),
data = pres_absen_dat$`750 meter buffer`,
family = 'binomial')
elk_seismic <- glm(elk ~ scale(seismic_lines),
data = pres_absen_dat$`750 meter buffer`,
family = 'binomial')
elk_pipe <- glm(elk ~ scale(pipeline),
data = pres_absen_dat$`750 meter buffer`,
family = 'binomial')
elk_well <- glm(elk ~ scale(wells),
data = pres_absen_dat$`750 meter buffer`,
family = 'binomial')
model.sel(elk_null,
elk_ag,
elk_broadleaf,
elk_coniferous,
elk_grassland,
elk_mixed,
elk_road,
elk_harvest,
elk_harvest2000,
elk_harvest_pre2000,
elk_seismic,
elk_pipe,
elk_well)
## Model selection table
## (Int) scl(lc_agr) scl(lc_brd) scl(lc_cnf) scl(lc_grs)
## elk_coniferous -1.695 -0.8751
## elk_broadleaf -1.595 0.6394
## elk_harvest_pre2000 -1.565
## elk_road -1.572
## elk_null -1.473
## elk_ag -1.521 0.3997
## elk_seismic -1.551
## elk_harvest -1.525
## elk_mixed -1.548
## elk_well -1.518
## elk_harvest2000 -1.485
## elk_pipe -1.482
## elk_grassland -1.479 0.1404
## scl(lc_mxd) scl(rds) scl(hrv) scl(hrv_2000) scl(hrv_p20)
## elk_coniferous
## elk_broadleaf
## elk_harvest_pre2000 0.5537
## elk_road -0.5825
## elk_null
## elk_ag
## elk_seismic
## elk_harvest 0.41
## elk_mixed -0.5303
## elk_well
## elk_harvest2000 -0.1973
## elk_pipe
## elk_grassland
## scl(ssm_lns) scl(ppl) scl(wll) df logLik AICc delta weight
## elk_coniferous 2 -25.873 56.0 0.00 0.282
## elk_broadleaf 2 -26.574 57.4 1.40 0.140
## elk_harvest_pre2000 2 -26.760 57.7 1.77 0.116
## elk_road 2 -27.238 58.7 2.73 0.072
## elk_null 1 -28.380 58.8 2.87 0.067
## elk_ag 2 -27.432 59.1 3.12 0.059
## elk_seismic -0.5378 2 -27.617 59.4 3.49 0.049
## elk_harvest 2 -27.624 59.5 3.50 0.049
## elk_mixed 2 -27.669 59.6 3.59 0.047
## elk_well -0.3835 2 -27.815 59.8 3.88 0.040
## elk_harvest2000 2 -28.224 60.7 4.70 0.027
## elk_pipe -0.1707 2 -28.268 60.8 4.79 0.026
## elk_grassland 2 -28.286 60.8 4.83 0.025
## Models ranked by AICc(x)
Overparameterization is much easier with logistic regression models because the rule is n = 10 fr the observations in your minority class (presence) for each parameter. So we need to calculate how many 1’s we have with each species so we know how many parameters we can have in our models. We have 59 observations total
# get number of presence and absences
summary(pres_absen_dat$`750 meter buffer`$grizzly_bear)
## 0 1
## 50 9
Overparameterization is much easier with logistic regression models because the rule is n = 10 fr the observations in your minority class (presence) for each parameter. So we need to calculate how many 1’s we have with each species so we know how many parameters we can have in our models. We have 59 observations total
# get number of presence and absences
summary(pres_absen_dat$`750 meter buffer`$mule_deer)
## 0 1
## 44 15
Overparameterization is much easier with logistic regression models because the rule is n = 10 fr the observations in your minority class (presence) for each parameter. So we need to calculate how many 1’s we have with each species so we know how many parameters we can have in our models. We have 59 observations total
# get number of presence and absences
summary(pres_absen_dat$`750 meter buffer`$red_fox)
## 0 1
## 47 12